diff --git a/README b/README index 5084853835c..a0ed36a1d49 100644 --- a/README +++ b/README @@ -1,3 +1,14 @@ +Linux UEFI Validation Distribution +================================== + +This is a fork of Poky that also includes the meta-luv layer which is +the layer containing all recipes for the Linux UEFI Validation (luv) +distribution. The intention of this fork is to make it simple to build +the luv distribution by integrating everything into a single git +repository. + +See meta-luv/README for more details on the luv distribution. + Poky ==== diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index 2e49a093654..edab5566a9b 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py @@ -285,7 +285,7 @@ def exec_func_shell(func, d, runfile, cwd=None): if bb.msg.loggerVerboseLogs: script.write("set -x\n") if cwd: - script.write("cd %s\n" % cwd) + script.write("cd '%s'\n" % cwd) script.write("%s\n" % func) script.write(''' # cleanup diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index 3ca27a69e0f..a2795ce0b71 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py @@ -86,6 +86,8 @@ def runCommand(self, commandline, ro_only = False): def runAsyncCommand(self): try: + if self.cooker.state == bb.cooker.state.error: + return False if self.currentAsyncCommand is not None: (command, options) = self.currentAsyncCommand commandmethod = getattr(CommandsAsync, command) diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index ad36b34aa48..b504f45da68 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -61,7 +61,7 @@ class CollectionError(bb.BBHandledException): """ class state: - initial, parsing, running, shutdown, forceshutdown, stopped = range(6) + initial, parsing, running, shutdown, forceshutdown, stopped, error = range(7) class SkippedPackage: @@ -1321,6 +1321,7 @@ def pre_serve(self): self.prhost = prserv.serv.auto_start(self.data) except prserv.serv.PRServiceConfigError: bb.event.fire(CookerExit(), self.event_data) + self.state = state.error return def post_serve(self): diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index 451d104f676..b9f673c2149 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py @@ -805,6 +805,10 @@ def try_mirror_url(newuri, origud, ud, ld, check = False): dest = os.path.join(dldir, os.path.basename(ud.localpath)) if not os.path.exists(dest): os.symlink(ud.localpath, dest) + if not os.path.exists(origud.donestamp) or origud.method.need_update(origud.url, origud, ld): + origud.method.download(origud.url, origud, ld) + if hasattr(ud.method,"build_mirror_data"): + origud.method.build_mirror_data(origud.url, origud, ld) return None # Otherwise the result is a local file:// and we symlink to it if not os.path.exists(origud.localpath): diff --git a/bitbake/lib/bb/fetch2/hg.py b/bitbake/lib/bb/fetch2/hg.py index b1c8675dd4c..cf214816b72 100644 --- a/bitbake/lib/bb/fetch2/hg.py +++ b/bitbake/lib/bb/fetch2/hg.py @@ -92,7 +92,10 @@ def _buildhgcommand(self, ud, d, command): if not ud.user: hgroot = host + ud.path else: - hgroot = ud.user + "@" + host + ud.path + if ud.pswd: + hgroot = ud.user + ":" + ud.pswd + "@" + host + ud.path + else: + hgroot = ud.user + "@" + host + ud.path if command == "info": return "%s identify -i %s://%s/%s" % (basecmd, proto, hgroot, ud.module) @@ -112,7 +115,10 @@ def _buildhgcommand(self, ud, d, command): # do not pass options list; limiting pull to rev causes the local # repo not to contain it and immediately following "update" command # will crash - cmd = "%s pull" % (basecmd) + if ud.user and ud.pswd: + cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" pull" % (basecmd, ud.user, ud.pswd, proto) + else: + cmd = "%s pull" % (basecmd) elif command == "update": cmd = "%s update -C %s" % (basecmd, " ".join(options)) else: diff --git a/bitbake/lib/bb/fetch2/perforce.py b/bitbake/lib/bb/fetch2/perforce.py index fc4074d5a33..d2ecccc540e 100644 --- a/bitbake/lib/bb/fetch2/perforce.py +++ b/bitbake/lib/bb/fetch2/perforce.py @@ -112,7 +112,7 @@ def urldata_init(self, ud, d): base = path which = path.find('/...') if which != -1: - base = path[:which] + base = path[:which-1] base = self._strip_leading_slashes(base) diff --git a/bitbake/lib/bb/fetch2/svn.py b/bitbake/lib/bb/fetch2/svn.py index 9a779d24487..123aa136eb9 100644 --- a/bitbake/lib/bb/fetch2/svn.py +++ b/bitbake/lib/bb/fetch2/svn.py @@ -27,6 +27,7 @@ import sys import logging import bb +import re from bb import data from bb.fetch2 import FetchMethod from bb.fetch2 import FetchError @@ -91,6 +92,8 @@ def _buildsvncommand(self, ud, d, command): if command == "info": svncmd = "%s info %s %s://%s/%s/" % (ud.basecmd, " ".join(options), proto, svnroot, ud.module) + elif command == "log1": + svncmd = "%s log --limit 1 %s %s://%s/%s/" % (ud.basecmd, " ".join(options), proto, svnroot, ud.module) else: suffix = "" if ud.revision: @@ -167,14 +170,13 @@ def _latest_revision(self, url, ud, d, name): """ Return the latest upstream revision number """ - bb.fetch2.check_network_access(d, self._buildsvncommand(ud, d, "info")) + bb.fetch2.check_network_access(d, self._buildsvncommand(ud, d, "log1")) - output = runfetchcmd("LANG=C LC_ALL=C " + self._buildsvncommand(ud, d, "info"), d, True) + output = runfetchcmd("LANG=C LC_ALL=C " + self._buildsvncommand(ud, d, "log1"), d, True) - revision = None - for line in output.splitlines(): - if "Last Changed Rev" in line: - revision = line.split(":")[1].strip() + # skip the first line, as per output of svn log + # then we expect the revision on the 2nd line + revision = re.search('^r([0-9]*)', output.splitlines()[1]).group(1) return revision diff --git a/bitbake/lib/bb/monitordisk.py b/bitbake/lib/bb/monitordisk.py index 3e6ecbd4e23..fca43eefd0f 100644 --- a/bitbake/lib/bb/monitordisk.py +++ b/bitbake/lib/bb/monitordisk.py @@ -243,7 +243,7 @@ def check(self, rq): # zero, this is a feature of the fs, we disable the inode # checking for such a fs. if st.f_files == 0: - logger.warn("Inode check for %s is unavaliable, will remove it from disk monitor" % path) + logger.info("Inode check for %s is unavaliable, will remove it from disk monitor" % path) self.devDict[k][2] = None continue # Always show warning, the self.checked would always be False if the action is WARN diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index c09cfd4b2ca..72c020801b4 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -1204,6 +1204,8 @@ def __init__(self, rq): self.stampcache = {} + initial_covered = self.rq.scenequeue_covered.copy() + # Mark initial buildable tasks for task in xrange(self.stats.total): self.runq_running.append(0) @@ -1257,13 +1259,28 @@ def __init__(self, rq): except TypeError: covered_remove = bb.utils.better_eval(call2, locs) - for task in covered_remove: + def removecoveredtask(task): fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]] taskname = self.rqdata.runq_task[task] + '_setscene' bb.build.del_stamp(taskname, self.rqdata.dataCache, fn) - logger.debug(1, 'Not skipping task %s due to setsceneverify', task) self.rq.scenequeue_covered.remove(task) + toremove = covered_remove + for task in toremove: + logger.debug(1, 'Not skipping task %s due to setsceneverify', task) + while toremove: + covered_remove = [] + for task in toremove: + removecoveredtask(task) + for deptask in self.rqdata.runq_depends[task]: + if deptask not in self.rq.scenequeue_covered: + continue + if deptask in toremove or deptask in covered_remove or deptask in initial_covered: + continue + logger.debug(1, 'Task %s depends on task %s so not skipping' % (task, deptask)) + covered_remove.append(deptask) + toremove = covered_remove + logger.debug(1, 'Full skip list %s', self.rq.scenequeue_covered) event.fire(bb.event.StampUpdate(self.rqdata.target_pairs, self.rqdata.dataCache.stamp), self.cfgData) diff --git a/documentation/adt-manual/adt-command.xml b/documentation/adt-manual/adt-command.xml index be54ae8ec36..0ed3396ef5f 100644 --- a/documentation/adt-manual/adt-command.xml +++ b/documentation/adt-manual/adt-command.xml @@ -8,23 +8,32 @@ Recall that earlier the manual discussed how to use an existing toolchain tarball that had been installed into the default installation - directory, /opt/poky, which is outside of the + directory, /opt/poky/&DISTRO;, which is outside of the Build Directory (see the section "Using a Cross-Toolchain Tarball)". And, that sourcing your architecture-specific environment setup script initializes a suitable cross-toolchain development environment. - During the setup, locations for the compiler, QEMU scripts, QEMU binary, + + + + During this setup, locations for the compiler, QEMU scripts, QEMU binary, a special version of pkgconfig and other useful utilities are added to the PATH variable. - Variables to assist pkgconfig and autotools - are also defined so that, - for example, configure.sh can find pre-generated - test results for tests that need target hardware on which to run. - These conditions allow you to easily use the toolchain outside of the - OpenEmbedded build environment on both autotools-based projects and - Makefile-based projects. + Also, variables to assist + pkgconfig and autotools + are also defined so that, for example, configure.sh + can find pre-generated test results for tests that need target hardware + on which to run. + + Collectively, these conditions allow you to easily use the toolchain + outside of the OpenEmbedded build environment on both autotools-based + projects and Makefile-based projects. + This chapter provides information for both these types of projects. + + +
Autotools-Based Projects @@ -179,7 +188,7 @@ If configure script results in problems recognizing the --with-libtool-sysroot=<sysroot-dir> option, regenerate the script to enable the support by doing the following and then - re-running the script: + run the script again: $ libtoolize --automake $ aclocal -I ${OECORE_NATIVE_SYSROOT}/usr/share/aclocal \ diff --git a/documentation/adt-manual/adt-intro.xml b/documentation/adt-manual/adt-intro.xml index 0d323319a8e..a92828515da 100644 --- a/documentation/adt-manual/adt-intro.xml +++ b/documentation/adt-manual/adt-intro.xml @@ -22,8 +22,8 @@ and an introduction to the Eclipse IDE Yocto Plug-in. - The ADT is distribution-neutral and does not require the Yocto - Project reference distribution, which is called Poky. + The ADT is distribution-neutral and does not require the Yocto + Project reference distribution, which is called Poky. This manual, however, uses examples that use the Poky distribution. @@ -43,7 +43,7 @@ An architecture-specific cross-toolchain and matching sysroot both built by the OpenEmbedded build system. - The toolchain and sysroot are based on a + The toolchain and sysroot are based on a Metadata configuration and extensions, which allows you to cross-develop on the host machine for the target hardware. @@ -149,8 +149,7 @@ that causes skips in audio, stutters in your desktop experience, or situations that overload your server even when you have plenty of CPU power left. - You can find out more about LatencyTOP at - . + PowerTOP: Helps you determine what software is using the most power. You can find out more about PowerTOP at diff --git a/documentation/adt-manual/adt-manual.xml b/documentation/adt-manual/adt-manual.xml index 0c51b1eb24c..9ac54d35d02 100644 --- a/documentation/adt-manual/adt-manual.xml +++ b/documentation/adt-manual/adt-manual.xml @@ -66,6 +66,11 @@ October 2013 Released with the Yocto Project 1.5 Release. + + 1.5.1 + Sometime in 2013 + Released with the Yocto Project 1.5.1 Release. + @@ -79,11 +84,10 @@ the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales as published by Creative Commons. - Due to production processes, there could be differences between the Yocto Project - documentation bundled in the release tarball and the - Yocto Project Application Developer's Guide on - the Yocto Project website. - For the latest version of this manual, see the manual on the website. + For the latest version of this manual associated with this + Yocto Project release, see the + Yocto Project Application Developer's Guide + from the Yocto Project website. diff --git a/documentation/adt-manual/adt-prepare.xml b/documentation/adt-manual/adt-prepare.xml index 3c50cf90e92..df9d5b0f76b 100644 --- a/documentation/adt-manual/adt-prepare.xml +++ b/documentation/adt-manual/adt-prepare.xml @@ -80,39 +80,48 @@ The ADT Installer is contained in the ADT Installer tarball. - You can download the tarball into any directory from the - Index of Releases, specifically - at - . - Or, you can use BitBake to generate the tarball inside the existing - Build Directory. - - - - If you use BitBake to generate the ADT Installer tarball, you must - source the environment setup script - (&OE_INIT_FILE; - or - oe-init-build-env-memres) - located in the Source Directory before running the - BitBake command that creates the tarball. - - - - The following example commands download the Poky tarball, set up the - Source Directory, - set up the environment while also creating the default Build Directory, - and run the BitBake command that results in the tarball - ~/yocto-project/build/tmp/deploy/sdk/adt_installer.tar.bz2: - + You can get the tarball using either of these methods: + + Download the Tarball: + You can download the tarball from + into + any directory. + Build the Tarball: + You can use BitBake to generate the tarball inside an + existing + Build Directory. + + If you use BitBake to generate the ADT Installer + tarball, you must source the + environment setup script + (&OE_INIT_FILE; + or + oe-init-build-env-memres) + located in the Source Directory before running the + BitBake command that creates the tarball. + The following example commands establish + the + Source Directory, + check out the current release branch, set up the + build environment while also creating the default + Build Directory, and run the BitBake command that + results in the tarball + poky/build/tmp/deploy/sdk/adt_installer.tar.bz2: + + Before using BitBake to build the ADT tarball, be + sure to make sure your + local.conf file is properly + configured. + + $ cd ~ - $ mkdir yocto-project - $ cd yocto-project - $ wget &YOCTO_RELEASE_DL_URL;/&YOCTO_POKY_TARBALL; - $ tar xjf &YOCTO_POKY_TARBALL; - $ source &OE_INIT_PATH; + $ git clone git://git.yoctoproject.org/poky + $ cd poky + $ git checkout -b &DISTRO_NAME; origin/&DISTRO_NAME; + $ source &OE_INIT_FILE; $ bitbake adt-installer - + +
@@ -127,7 +136,7 @@ a top-level directory named adt-installer: $ cd ~ - $ cp ~/poky/build/tmp/deploy/sdk/adt_installer.tar.bz2 $HOME + $ cp poky/build/tmp/deploy/sdk/adt_installer.tar.bz2 $HOME $ tar -xjf adt_installer.tar.bz2 Unpacking it creates the directory adt-installer, @@ -197,7 +206,7 @@ When you run the installer, the environment must use a host gcc: - $ cd ~/adt-installer + $ cd adt-installer $ ./adt_installer Once the installer begins to run, you are asked to enter the @@ -268,7 +277,7 @@ target, go into the x86_64 folder and download the following installer: - poky-eglibc-x86_64-core-image-sato-i586-&DISTRO;.sh + poky-eglibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh Build your own toolchain installer. For cases where you cannot use an installer @@ -279,27 +288,32 @@ Once you have the installer, run it to install the toolchain. - You must change the permissions on the toolchain installer - script so that it is executable. + + You must change the permissions on the toolchain + installer script so that it is executable. + The following command shows how to run the installer given a toolchain tarball for a 64-bit x86 development host system and a 32-bit x86 target architecture. The example assumes the toolchain installer is located in ~/Downloads/. - $ ~/Downloads/poky-eglibc-x86_64-core-image-sato-i586-&DISTRO;.sh + $ ~/Downloads/poky-eglibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh - - If you do not have write permissions for the directory - into which you are installing the toolchain, the - toolchain installer notifies you and exits. - Be sure you have write permissions in the directory and - run the installer again. - - Once the tarball is expanded, the cross-toolchain is + The first thing the installer prompts you for is the + directory into which you want to install the toolchain. + The default directory used is + /opt/poky/&DISTRO;. + If you do not have write permissions for the directory + into which you are installing the toolchain, the + toolchain installer notifies you and exits. + Be sure you have write permissions in the directory and + run the installer again. + When the script finishes, the cross-toolchain is installed. You will notice environment setup files for the - cross-toolchain in the directory. + cross-toolchain in the installation directory. + @@ -320,37 +334,43 @@ Follow these steps to generate the toolchain into the Build Directory: - Source the environment setup script - &OE_INIT_FILE; located in the + Set up the Build Environment: + Source the OpenEmbedded build environment setup + script (i.e. + &OE_INIT_FILE; + or + oe-init-build-env-memres) + located in the Source Directory. - At this point, you should be sure that the + Check your Local Configuration File: + At this point, you should be sure that the MACHINE variable in the local.conf file found in the conf directory of the Build Directory is set for the target architecture. - Comments within the local.conf file list the values you - can use for the MACHINE variable. - You can populate the Build Directory with the cross-toolchains for more - than a single architecture. - You just need to edit the MACHINE variable in the - local.conf file and re-run the BitBake - command. - Run bitbake meta-ide-support to complete the - cross-toolchain generation. - If you change out of your working directory after you - source the environment setup script and before you run - the BitBake command, the command might not work. - Be sure to run the BitBake command immediately - after checking or editing the local.conf but without - changing out of your working directory. - Once the BitBake command finishes, - the cross-toolchain is generated and populated within the Build Directory. - You will notice environment setup files for the cross-toolchain in the - Build Directory in the tmp directory. - Setup script filenames contain the strings environment-setup. - Be aware that when you use this method to install the toolchain you still need - to separately extract and install the sysroot filesystem. + Comments within the local.conf file + list the values you can use for the + MACHINE variable. + + You can populate the Build Directory with the + cross-toolchains for more than a single architecture. + You just need to edit the MACHINE + variable in the local.conf file and + re-run the BitBake command. + + Generate the Cross-Toolchain: + Run bitbake meta-ide-support to + complete the cross-toolchain generation. + Once the BitBake command finishes, the cross-toolchain is + generated and populated within the Build Directory. + You will notice environment setup files for the + cross-toolchain that contain the string + "environment-setup" in the + Build Directory's tmp folder. + Be aware that when you use this method to install the + toolchain, you still need to separately extract and install + the sysroot filesystem. For information on how to do this, see the "Extracting the Root Filesystem" section. @@ -437,8 +457,8 @@ application from within the Eclipse IDE, you must have an image that contains the Yocto Target Communication Framework (TCF) agent (tcf-agent). - By default, the Yocto Project provides only one type pre-built image that contains the - tcf-agent. + By default, the Yocto Project provides only one type of pre-built + image that contains the tcf-agent. And, those images are SDK (e.g.core-image-sato-sdk). @@ -467,13 +487,16 @@ the following commands: $ git clone http://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git - $ cd agent + $ cd org.eclipse.tcf.agent/agent - Modify the Makefile.inc file + Locate the + Makefile.inc file inside the + agent folder and modify it for the cross-compilation environment by setting the OPSYS and MACHINE - variables according to your target. + variables according to your target. + Use the cross-development tools to build the tcf-agent. Before you "Make" the file, be sure your cross-tools are set up first. @@ -493,32 +516,63 @@ Extracting the Root Filesystem - You must extract the root filesystem if you want to boot the image using NFS - or you want to use the root filesystem as the target sysroot. - For example, the Eclipse IDE environment with the Eclipse Yocto Plug-in installed allows you - to use QEMU to boot under NFS. - Another example is if you want to develop your target application using the - root filesystem as the target sysroot. + If you install your toolchain by hand or build it using BitBake and + you need a root filesystem, you need to extract it separately. + If you use the ADT Installer to install the ADT, the root + filesystem is automatically extracted and installed. + + + + Here are some cases where you need to extract the root filesystem: + + You want to boot the image using NFS. + + You want to use the root filesystem as the + target sysroot. + For example, the Eclipse IDE environment with the Eclipse + Yocto Plug-in installed allows you to use QEMU to boot + under NFS. + You want to develop your target application + using the root filesystem as the target sysroot. + + To extract the root filesystem, first source - the cross-development environment setup script and then - use the runqemu-extract-sdk command on the + the cross-development environment setup script. + If you built the toolchain in the Build Directory, you will find + the toolchain environment script in the + tmp directory. + If you installed the toolchain by hand, the environment setup + script is located in /opt/poky/&DISTRO;. + + + + After sourcing the environment script, use the + runqemu-extract-sdk command and provide the filesystem image. - For example, the following commands set up the environment and then extract - the root filesystem from a previously built filesystem image tarball named - core-image-sato-sdk-qemux86-2011091411831.rootfs.tar.bz2. - The example extracts the root filesystem into the $HOME/qemux86-sato - directory: + + + + Following is an example. + The second command sets up the environment. + In this case, the setup script is located in the + /opt/poky/&DISTRO; directory. + The third command extracts the root filesystem from a previously + built filesystem that is located in the + ~/Downloads directory. + Furthermore, this command extracts the root filesystem into the + qemux86-sato directory: - $ source $HOME/toolchain_dir/environment-setup-i586-poky-linux + $ cd ~ + $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux $ runqemu-extract-sdk \ - ~Downloads/core-image-sato-sdk-qemux86-2011091411831.rootfs.tar.bz2 \ + ~/Downloads/core-image-sato-sdk-qemux86-2011091411831.rootfs.tar.bz2 \ $HOME/qemux86-sato - In this case, you could now point to the target sysroot at - $HOME/qemux86-sato. + You could now point to the target sysroot at + qemux86-sato. @@ -528,30 +582,26 @@ As an alternative to locating and downloading a toolchain installer, - you can build the toolchain installer if you have a - Build Directory. - - - - You can build the toolchain - installer using bitbake meta-toolchain. - This method requires you to still install the target - sysroot by installing and extracting it separately. - For information on how to install the sysroot, see the - "Extracting the Root Filesystem" section. - - - - A final method of building the toolchain installer exists that has - significant advantages over the previous method. - This method results in a toolchain installer that contains the sysroot - that matches your target root filesystem. - To build this installer, use the - bitbake image -c populate_sdk command. + you can build the toolchain installer one of two ways if you have a + Build Directory: + + Use bitbake meta-toolchain. + This method requires you to still install the target + sysroot by installing and extracting it separately. + For information on how to install the sysroot, see the + "Extracting the Root Filesystem" + section. + Use + bitbake image -c populate_sdk. + This method has significant advantages over the previous method + because it results in a toolchain installer that contains the + sysroot that matches your target root filesystem. + + - Remember, before using any bitbake command, you + Remember, before using any BitBake command, you must source the build environment setup script (i.e. &OE_INIT_FILE; @@ -567,12 +617,27 @@ variable is correctly set if you are building a toolchain designed to run on an architecture that differs from your current development host machine (i.e. the build machine). - + - - When the BitBake command completes, the toolchain installer will be in - tmp/deploy/sdk in the Build Directory. - + + When the BitBake command completes, the toolchain installer will be in + tmp/deploy/sdk in the Build Directory. + + By default, this toolchain does not build static binaries. + If you want to use the toolchain to build these types of libraries, + you need to be sure your image has the appropriate static + development libraries. + Use the + IMAGE_INSTALL + variable inside your local.conf file to + install the appropriate library packages. + Following is an example using eglibc static + development libraries: + + IMAGE_INSTALL_append = " eglibc-staticdev" + + + diff --git a/documentation/bsp-guide/bsp-guide.xml b/documentation/bsp-guide/bsp-guide.xml index 9afebb421a2..86b16d1226c 100644 --- a/documentation/bsp-guide/bsp-guide.xml +++ b/documentation/bsp-guide/bsp-guide.xml @@ -78,6 +78,11 @@ October 2013 Released with the Yocto Project 1.5 Release. + + 1.5.1 + Sometime in 2013 + Released with the Yocto Project 1.5.1 Release. + @@ -91,11 +96,10 @@ the terms of the Creative Commons Attribution-Non-Commercial-Share Alike 2.0 UK: England & Wales as published by Creative Commons. - Due to production processes, there could be differences between the Yocto Project - documentation bundled in the release tarball and the - Yocto Project Board Support Package (BSP) Developer's Guide on - the Yocto Project website. - For the latest version of this manual, see the manual on the website. + For the latest version of this manual associated with this + Yocto Project release, see the + Yocto Project Board Support Package (BSP) Developer's Guide + from the Yocto Project website. diff --git a/documentation/bsp-guide/bsp.xml b/documentation/bsp-guide/bsp.xml index e11eb4f663f..9a8f3af5736 100644 --- a/documentation/bsp-guide/bsp.xml +++ b/documentation/bsp-guide/bsp.xml @@ -394,12 +394,13 @@ To use an include file, you simply include them in the machine configuration file. - For example, the Crown Bay BSP crownbay.conf has the + For example, the Crown Bay BSP crownbay.conf contains the following statements: require conf/machine/include/tune-atom.inc require conf/machine/include/ia32-base.inc require conf/machine/include/meta-intel.inc + require conf/machine/include/meta-intel-emgd.inc @@ -420,7 +421,7 @@ formfactor_0.0.bbappend file, which is an append file used to augment the recipe that starts the build. Furthermore, there are machine-specific settings used during the - build that are defined by the machconfig. + build that are defined by the machconfig file. In the Crown Bay example, two machconfig files exist: one that supports the IntelĀ® Embedded Media and Graphics Driver (IntelĀ® EMGD) and one that does not: @@ -460,7 +461,7 @@ (VESA) graphics): meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend - meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-config/crownbay-noemgd/xorg.conf + meta-crownbay/recipes-graphics/xorg-xserver/xserver-xf86-config/crownbay/xorg.conf @@ -561,7 +562,7 @@ For example, suppose you had some configuration options in a file called network_configs.cfg. - You can place that file inside a directory named /linux-yocto and then add + You can place that file inside a directory named linux-yocto and then add a SRC_URI statement such as the following to the append file. When the OpenEmbedded build system builds the kernel, the configuration options are picked up and applied. @@ -747,7 +748,7 @@ Instructions on how to boot the BSP build from the BSP layer. Instructions on how to boot the binary images - contained in the /binary directory, + contained in the binary directory, if present. Information on any known bugs or issues that users should know about when either building or booting the BSP @@ -758,7 +759,7 @@ meta-<bsp_name> directory. This file specifies exactly where you can find the sources used to generate the binary images contained in the - /binary directory, if present. + binary directory, if present. See the README.sources file for the Fish River Island 2 BSP in the meta-fri2 BSP layer diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index ff4bbcd3eac..ae567195297 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml @@ -9,8 +9,8 @@ This chapter describes fundamental procedures such as creating layers, adding new software packages, extending or customizing images, porting work to new hardware (adding a new machine), and so forth. - You will find the procedures documented here occur often in the - develop cycle using the Yocto Project. + You will find that the procedures documented here occur often in the + development cycle using the Yocto Project.
@@ -23,7 +23,7 @@ each other. You might find it tempting to keep everything in one layer when working on a single project. - However, the more modular you organize your Metadata, the easier + However, the more modular your Metadata, the easier it is to cope with future changes. @@ -31,7 +31,7 @@ To illustrate how layers are used to keep things modular, consider machine customizations. These types of customizations typically reside in a special layer, - rather than a general layer, called a Board Specific Package (BSP) + rather than a general layer, called a Board Support Package (BSP) Layer. Furthermore, the machine customizations should be isolated from recipes and Metadata that support a new GUI environment, @@ -60,11 +60,12 @@ You can easily identify layers that ship with a Yocto Project release in the Source Directory by their folder names. - Folders that are layers begin with the string - meta. + Folders that represent layers typically have names that begin with + the string meta-. - It is not a requirement that a layer begins with the - string meta. + It is not a requirement that a layer name begin with the + prefix meta-, but it's a commonly accepted + standard in the Yocto Project community. For example, when you set up the Source Directory structure, you will see several layers: @@ -72,14 +73,14 @@ meta-skeleton, meta-yocto, and meta-yocto-bsp. - Each of these folders is a layer. + Each of these folders represents a distinct layer. - Furthermore, if you set up a local copy of the + As another example, if you set up a local copy of the meta-intel Git repository and then explore the folder of that general layer, - you will discover many BSP layers inside. + you will discover many Intel-specific BSP layers inside. For more information on BSP layers, see the "BSP Layers" section in the Yocto Project Board Support Package (BSP) @@ -150,6 +151,7 @@ BBFILE_COLLECTIONS += "yoctobsp" BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/" BBFILE_PRIORITY_yoctobsp = "5" + LAYERVERSION_yoctobsp = "2" Here is an explanation of the example: @@ -194,6 +196,10 @@ where the same package might appear in multiple layers and allows you to choose what layer should take precedence. + The + LAYERVERSION + variable optionally specifies the version of a + layer as a single number. Note the use of the LAYERDIR @@ -218,7 +224,7 @@ file within the layer. If the layer adds distro policy, add the distro configuration in a conf/distro/ - file with the layer. + file within the layer. If the layer introduces new recipes, put the recipes you need in recipes-* subdirectories within the layer. @@ -247,8 +253,8 @@ configuration. In other words, do not copy an entire recipe into your layer and then modify it. - Use .bbappend files to override the - parts of the recipe you need to modify. + Rather, use .bbappend files to override + only those parts of the original recipe you need to modify.
@@ -270,6 +276,9 @@ the layer to which it originally belongs. If this is the case, you need to address that deficiency instead of overlaying the include file. +
+ + For example, consider how support plug-ins for the Qt 4 database are configured. The Source Directory does not have MySQL or PostgreSQL. @@ -296,8 +305,8 @@ impacting a build for a different machine. Following are some examples: - Modifying Variables to support - a different machine: + Modifying Variables to Support + a Different Machine: Suppose you have a layer named meta-one that adds support for building machine "one". @@ -352,7 +361,7 @@ to cause the build to use your own version of the file. For example, an append file in your layer at - /meta-one/recipes-core/base-files/base-files.bbappend + meta-one/recipes-core/base-files/base-files.bbappend could extend FILESPATH using @@ -364,7 +373,7 @@ The build for machine "one" will pick up your machine-specific file as long as you have the file in - /meta-one/recipes-core/base-files/base-files/. + meta-one/recipes-core/base-files/base-files/. However, if you are building for a different machine and the bblayers.conf file includes @@ -379,9 +388,9 @@ the file in a subdirectory specific to the machine. For example, rather than placing the file in - /meta-one/recipes-core/base-files/base-files/ + meta-one/recipes-core/base-files/base-files/ as shown above, put it in - /meta-one/recipes-core/base-files/base-files/one/. + meta-one/recipes-core/base-files/base-files/one/. Not only does this make sure the file is used only when building for machine "one" but the build process locates the file more quickly. @@ -491,7 +500,7 @@ number-specific. If the corresponding recipe is renamed to update to a newer version, the corresponding .bbappend file must - be renamed as well. + be renamed (and possibly updated) as well. During the build process, BitBake displays an error on starting if it detects a .bbappend file that does not have a corresponding recipe with a matching name. @@ -522,7 +531,7 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - PR = "r21" + PR = "r41" SRC_URI = "file://config file://machconfig" S = "${WORKDIR}" @@ -537,7 +546,8 @@ if [ -s "${S}/machconfig" ]; then install -m 0644 ${S}/machconfig ${D}${sysconfdir}/formfactor/ fi - } + } + In the main recipe, note the SRC_URI variable, which tells the OpenEmbedded build system where to @@ -552,8 +562,6 @@ The file is in recipes-bsp/formfactor: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - - PRINC := "${@int(PRINC) + 2}" @@ -796,13 +804,13 @@ The conf directory: - This directory contains the layers - .conf. + This directory contains the layer's configuration file. The root name for the file is the same as the root name - your provided for the layer. + your provided for the layer (e.g. + <layer>.conf). The - COPYING.MIT: + COPYING.MIT file: The copyright and use notice for the software. The README @@ -816,10 +824,9 @@ If you choose to generate a sample recipe file, the script prompts you for the name for the recipe and then creates it in <layer>/recipes-example/example/. - in a directory named recipes-example. The script creates a .bb file and a directory, which contains a sample - helloworld.c source file and along with + helloworld.c source file, along with a sample patch file. If you do not provide a recipe name, the script uses "example". @@ -851,7 +858,8 @@ Once you create your general layer, you must add it to your bblayers.conf file. - Here is an example: + Here is an example where a layer named + meta-mylayer is added: BBLAYERS = ?" \ /usr/local/src/yocto/meta \ @@ -879,98 +887,68 @@ This section describes several methods and provides guidelines for each. -
- Customizing Images Using Custom .bb Files +
+ Customizing Images Using <filename>local.conf</filename> - One way to get additional software into an image is to create a custom image. - The following example shows the form for the two lines you need: - - IMAGE_INSTALL = "packagegroup-core-x11-base package1 package2" - - inherit core-image - + Probably the easiest way to customize an image is to add a + package by way of the local.conf + configuration file. + Because it is limited to local use, this method generally only + allows you to add packages and is not as flexible as creating + your own customized image. + When you add packages using local variables this way, you need + to realize that these variable changes affect all images at + the same time and might not be what you require. - By creating a custom image, a developer has total control - over the contents of the image. - It is important to use the correct names of packages in the + To add a package to your image using the local configuration + file, use the IMAGE_INSTALL - variable. - You must use the OpenEmbedded notation and not the Debian notation for the names - (e.g. eglibc-dev instead of libc6-dev). - - - - The other method for creating a custom image is to base it on an existing image. - For example, if you want to create an image based on core-image-sato - but add the additional package strace to the image, - copy the meta/recipes-sato/images/core-image-sato.bb to a - new .bb and add the following line to the end of the copy: + variable with the _append operator: - IMAGE_INSTALL += "strace" + IMAGE_INSTALL_append = " strace" + Use of the syntax is important - specifically, the space between + the quote and the package name, which is + strace in this example. + This space is required since the _append + operator does not add the space. -
-
- Customizing Images Using Custom Package Groups + + Furthermore, you must use _append instead + of the += operator if you want to avoid + ordering issues. + The reason for this is because doing so unconditionally appends + to the variable and avoids ordering problems due to the + variable being set in image recipes and + .bbclass files with operators like + ?=. + Using _append ensures the operation takes + affect. + - For complex custom images, the best approach is to create a custom package group recipe - that is used to build the image or images. - A good example of a package group recipe is - meta/recipes-core/packagegroups/packagegroup-core-boot.bb. - The - PACKAGES - variable lists the package group packages you wish to produce. inherit packagegroup - sets appropriate default values and automatically adds -dev - and -dbg complementary - packages for every package specified in PACKAGES. - Note that the inherit line should be towards - the top of the recipe, certainly before you set PACKAGES. - For each package you specify in PACKAGES, you can use - RDEPENDS - and - RRECOMMENDS - entries to provide a list of packages the parent task package should contain. - Following is an example: + As shown in its simplest use, + IMAGE_INSTALL_append affects all images. + It is possible to extend the syntax so that the variable + applies to a specific image only. + Here is an example: - DESCRIPTION = "My Custom Package Groups" - - inherit packagegroup - - PACKAGES = "\ - packagegroup-custom-apps \ - packagegroup-custom-tools \ - " - - RDEPENDS_packagegroup-custom-apps = "\ - dropbear \ - portmap \ - psplash" - - RDEPENDS_packagegroup-custom-tools = "\ - oprofile \ - oprofileui-server \ - lttng-control \ - lttng-viewer" - - RRECOMMENDS_packagegroup-custom-tools = "\ - kernel-module-oprofile" + IMAGE_INSTALL_append_pn-core-image-minimal = " strace" + This example adds strace to + core-image-minimal only. - In the previous example, two package group packages are created with their dependencies and their - recommended package dependencies listed: packagegroup-custom-apps, and - packagegroup-custom-tools. - To build an image using these package group packages, you need to add - packagegroup-custom-apps and/or - packagegroup-custom-tools to - IMAGE_INSTALL. - For other forms of image dependencies see the other areas of this section. + You can add packages using a similar approach through the + CORE_IMAGE_EXTRA_INSTALL + variable. + If you use this variable, only + core-image-* images are affected.
@@ -979,8 +957,8 @@ EXTRA_IMAGE_FEATURES - You might want to customize your image by enabling or - disabling high-level image features by using the + Another method for customizing your image is to enable or + disable high-level image features by using the IMAGE_FEATURES and EXTRA_IMAGE_FEATURES variables. @@ -1055,59 +1033,105 @@
-
- Customizing Images Using <filename>local.conf</filename> +
+ Customizing Images Using Custom .bb Files - It is possible to customize image contents by using variables from your - local configuration in your conf/local.conf file. - Because it is limited to local use, this method generally only allows you to - add packages and is not as flexible as creating your own customized image. - When you add packages using local variables this way, you need to realize that - these variable changes affect all images at the same time and might not be - what you require. + You can also customize an image by creating a custom recipe + that defines additional software as part of the image. + The following example shows the form for the two lines you need: + + IMAGE_INSTALL = "packagegroup-core-x11-base package1 package2" + + inherit core-image + - The simplest way to add extra packages to all images is by using the + Defining the software using a custom recipe gives you total + control over the contents of the image. + It is important to use the correct names of packages in the IMAGE_INSTALL - variable with the _append operator: - - IMAGE_INSTALL_append = " strace" - - Use of the syntax is important. - Specifically, the space between the quote and the package name, which is - strace in this example. - This space is required since the _append - operator does not add the space. + variable. + You must use the OpenEmbedded notation and not the Debian notation for the names + (e.g. eglibc-dev instead of libc6-dev). - Furthermore, you must use _append instead of the += - operator if you want to avoid ordering issues. - The reason for this is because doing so unconditionally appends to the variable and - avoids ordering problems due to the variable being set in image recipes and - .bbclass files with operators like ?=. - Using _append ensures the operation takes affect. + The other method for creating a custom image is to base it on an existing image. + For example, if you want to create an image based on core-image-sato + but add the additional package strace to the image, + copy the meta/recipes-sato/images/core-image-sato.bb to a + new .bb and add the following line to the end of the copy: + + IMAGE_INSTALL += "strace" + +
+ +
+ Customizing Images Using Custom Package Groups - As shown in its simplest use, IMAGE_INSTALL_append affects - all images. - It is possible to extend the syntax so that the variable applies to a specific image only. - Here is an example: + For complex custom images, the best approach for customizing + an image is to create a custom package group recipe that is + used to build the image or images. + A good example of a package group recipe is + meta/recipes-core/packagegroups/packagegroup-core-boot.bb. + The + PACKAGES + variable lists the package group packages you wish to produce. + inherit packagegroup sets appropriate + default values and automatically adds -dev, + -dbg, and -ptest + complementary packages for every package specified in + PACKAGES. + Note that the inherit line should be towards + the top of the recipe, certainly before you set + PACKAGES. + For each package you specify in PACKAGES, + you can use + RDEPENDS + and + RRECOMMENDS + entries to provide a list of packages the parent task package + should contain. + Following is an example: - IMAGE_INSTALL_append_pn-core-image-minimal = " strace" + DESCRIPTION = "My Custom Package Groups" + + inherit packagegroup + + PACKAGES = "\ + packagegroup-custom-apps \ + packagegroup-custom-tools \ + " + + RDEPENDS_packagegroup-custom-apps = "\ + dropbear \ + portmap \ + psplash" + + RDEPENDS_packagegroup-custom-tools = "\ + oprofile \ + oprofileui-server \ + lttng-control \ + lttng-viewer" + + RRECOMMENDS_packagegroup-custom-tools = "\ + kernel-module-oprofile" - This example adds strace to core-image-minimal - only. - You can add packages using a similar approach through the - CORE_IMAGE_EXTRA_INSTALL - variable. - If you use this variable, only core-image-* images are affected. + In the previous example, two package group packages are created with their dependencies and their + recommended package dependencies listed: packagegroup-custom-apps, and + packagegroup-custom-tools. + To build an image using these package group packages, you need to add + packagegroup-custom-apps and/or + packagegroup-custom-tools to + IMAGE_INSTALL. + For other forms of image dependencies see the other areas of this section.
@@ -1116,7 +1140,7 @@ Writing a Recipe to Add a Package to Your Image - Recipes add packages to your image. + Recipes let you define packages you can add to your image. Writing a recipe means creating a .bb file that sets some variables. For information on variables that are useful for recipes and for information about recipe naming @@ -1495,7 +1519,7 @@ You might also need these variables: SERIAL_CONSOLES - (e.g. "115200 ttyS0") + (e.g. "115200;ttyS0 115200;ttyS1")
KERNEL_IMAGETYPE (e.g. "zImage") IMAGE_FSTYPES @@ -1531,11 +1555,11 @@ You need to create a configure task that configures the unpacked kernel with a defconfig. You can do this by using a make defconfig command or, - more commonly, by copying in a suitable defconfig file and and then running + more commonly, by copying in a suitable defconfig file and then running make oldconfig. By making use of inherit kernel and potentially some of the linux-*.inc files, most other functionality is - centralized and the the defaults of the class normally work well. + centralized and the defaults of the class normally work well. @@ -1903,6 +1927,737 @@ +
+ Creating Partitioned Images + + + Creating an image for a particular hardware target using the + OpenEmbedded build system does not necessarily mean you can boot + that image as is on your device. + Physical devices accept and boot images in various ways depending + on the specifics of the device. + Usually, information about the hardware can tell you what image + format the device requires. + Should your device require multiple partitions on an SD card, flash, + or an HDD, you can use the OpenEmbedded Image Creator + () to create the properly partitioned image. + + + + The wic command generates partitioned images + from existing OpenEmbedded build artifacts. + Image generation is driven by partitioning commands contained + in an Openembedded kickstart file (.wks) + specified either directly on the command-line or as one of a + selection of canned .wks files + (see 'wic list images'). + When applied to a given set of build artifacts, the result is an + image or set of images that can be directly written onto media and + used on a particular system. + + + + This section provides some background information on + wic, describes what you need to have in + place to run the tool, provides instruction on how to use + wic, and provides several examples. + + +
+ Background + + + This section provides some background on the + wic utility. + While none of this information is required to use + wic, you might find it interesting. + + + The name "wic" is derived from OpenEmbedded + Image Creator (oeic). + The "oe" diphthong in "oeic" was promoted to the + letter "w", because "oeic" is both difficult to remember and + pronounce. + + wic is loosely based on the + Meego Image Creator (mic) + framework. + The wic implementation has been + heavily modified to make direct use of OpenEmbedded + build artifacts instead of package installation and + configuration, which are already incorporated within + the OpenEmbedded artifacts. + + wic is a completely independent + standalone utility that initially provides + easier-to-use and more flexible replacements for a + couple bits of existing functionality in OE Core's + directdisk.bbclass and + mkefidisk.sh script. + The replaced scripts are implemented by a + general-purpose partitioning language based on Red Hat + kickstart syntax. + Underlying code for wic succeeded + from several projects over time. + + +
+ + + +
+ Requirements + + + In order to use the wic utility with the + OpenEmbedded Build system, you need to meet the following + requirements: + + The Linux distribution on your + development host must support the Yocto Project. + See the + "Supported Linux Distributions" + section in the Yocto Project Reference Manual for this + list of distributions. + + The standard system utilities, such as + cp, must be installed on your + development host system. + + + The + GNU Parted + package must be installed on your development host + system. + + + Have the build artifacts already available. + You must already have created an image using the + Openembedded build system (e.g. + core-image-minimal. + It might seem redundant to generate an image in order + to create an image using wic, + but the artifacts are needed and they are generated + with the build system. + + You must have sourced one of the build environment + setup scripts (i.e. + &OE_INIT_FILE; + or + oe-init-build-env-memres) + found in the + Build Directory. + + + +
+ +
+ Getting Help + + + You can get general help for the wic + by entering the wic command by itself + or by entering the command with a help argument as follows: + + $ wic -h + $ wic --help + + + + + Currently, wic supports two commands: + create and list. + You can get help for these commands as follows: + + $ wic help <command> + + + + + You can find more out about the images + wic creates using the provided + kickstart files with the following form of the command: + + $ wic list <image> help + + Where <image> is either + directdisk or + mkefidisk. + +
+ +
+ Operational Modes + + + You can run wic in two modes: Raw and + Cooked: + + Raw Mode: + You explicitly specify build artifacts through + command-line arguments. + Cooked Mode: + The current + MACHINE + setting and image name are used to automatically locate + and provide the build artifacts. + + + +
+ Raw Mode + + + The general form of the 'wic' command in raw mode is: + + $ wic create <image_name>.wks -r <rootfs_dir> -b <bootimg_dir> / + -k <kernel_dir> -n <native_sysroot> + + + You do not need root privileges to run + wic. + In fact, you should not run as root when using the + utility. + + + + + Following is a description of the wic + parameters and options: + + <image_name>.wks: + An OpenEmbedded kickstart file. + You can provide your own custom file or use a + file from a set of provided files as described + following this list. + -r <rootfs_dir>: + Specifies the path to the root filesystem directory + to be used and the .wks + root filesystem source. + -b <bootimg_dir>: + Specifies the path to the directory that contains + the boot artifacts (e.g. the + EFI or + syslinux directories) to use + as the .wks boot image source. + + -k <kernel_dir>: + Specifies the path to the dir containing the kernel + to use in the .wks boot + image. + -n <native_sysroot>: + Specifies the path to the native sysroot + that contains the tools used to build the image. + + + +
+ +
+ Cooked Mode + + + The general form of the wic command + using Cooked Mode is: + + $ wic create <kickstart_file> -e <image_name> + + This form is the simplest and most user-friendly, as it + does not require specifying all individual parameters. + All you need to provide is your own + .wks file or one provided with the + release. + + + + Following is a description of the wic + parameters and options: + + <kickstart>: + An OpenEmbedded kickstart file. + You can provide your own custom file or supplied + file. + -e <image_name>: + Specifies the image built using the OpenEmbedded + build system. + + +
+
+ +
+ Using a Provided Kickstart File + + + If you do not want to create your own + .wks file, you can use a provided + file. + Use the following command to list the available files: + + $ wic list images + mkefidisk Create an EFI disk image + directdisk Create a 'pcbios' direct disk image + + When you use a provided file, you do not have to use the + .wks extension. + Here is an example in Raw Mode that uses the + directdisk file: + + $ wic create directdisk -r <rootfs_dir> -b <bootimg_dir> \ + -k <kernel_dir> -n <native_sysroot> + + + + + Here are the actual partition language commands + used in the mkefidisk.wks file to generate + an image: + + # short-description: Create an EFI disk image + # long-description: Creates a partitioned EFI disk image that the user + # can directly dd to boot media. + + part /boot --source bootimg --ondisk sda --fstype=efi --label msdos --active --align 1024 + + part / --source rootfs --ondisk sda --fstype=ext3 --label platform --align 1024 + + part swap --ondisk sda --size 44 --label swap1 --fstype=swap + + bootloader --timeout=10 --append="rootwait rootfstype=ext3 console=ttyPCH0,115200 console=tty0 vmalloc=256MB snd-hda- intel.enable_msi=0" + + +
+ +
+ Examples + + + This section provides several examples that show how to use + the wic utility. + All the examples assume the list of requirements in the + "Requirements" section + have been met. + The examples assume the previously generated image is + core-image-minimal. + + +
+ Generate an Image using a Provided Kickstart File + + + This example runs in Cooked Mode and uses the + mkefidisk kickstart file: + + $ wic create mkefidisk -e core-image-minimal + Checking basic build environment... + Done. + + Creating image(s)... + + Info: The new image(s) can be found here: + /var/tmp/wic/build/mkefidisk-201310230946-sda.direct + + The following build artifacts were used to create the image(s): + ROOTFS_DIR: /home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/rootfs + BOOTIMG_DIR: /home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/core-image-minimal-1.0/hddimg + KERNEL_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel + NATIVE_SYSROOT: /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux + + + The image(s) were created using OE kickstart file: + /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/mkefidisk.wks + + This example shows the easiest way to create an image + by running in Cooked Mode and using the + -e option with a provided kickstart + file. + All that is necessary is to specify the image used to + generate the artifacts. + Your local.conf needs to have the + MACHINE + variable set to the machine you are using, which is + "minnow" in this example. + + + + The output specifies exactly which image was + created as well as where it was created. + The output also names the artifacts used and the exact + .wks script that was used to generate + the image. + + You should always verify the details provided in the + output to make sure that the image was indeed created + exactly as expected. + + + + + Continuing with the example, you can now directly + dd the image to a USB stick, or + whatever media for which you built your image, + and boot the resulting media: + + $ sudo dd if=/var/tmp/wic/build/mkefidisk-201310230946-sda.direct of=/dev/sdb + [sudo] password for trz: + 182274+0 records in + 182274+0 records out + 93324288 bytes (93 MB) copied, 14.4777 s, 6.4 MB/s + [trz@empanada ~]$ sudo eject /dev/sdb + + +
+ +
+ Using a Modified Kickstart File + + + Because wic image creation is driven + by the kickstart file, it is easy to affect image creation + by changing the parameters in the file. + This next example demonstrates that through modification + of the directdisk kickstart file. + + + + As mentioned earlier, you can use the command + wic list images to show the list + of provided kickstart files. + The directory in which these files reside is + scripts/lib/image/canned-wks/ + located in the + Source Directory. + Because the available files reside in this directory, you + can create and add your own custom files to the directory. + Subsequent use of the wic list images + command would then include your kickstart files. + + + + In this example, the existing + directdisk file already does most + of what is needed. + However, for the hardware in this example, the image will + need to boot from sdb instead of + sda, which is what the + directdisk kickstart file uses. + + + + The example begins by making a copy of the + directdisk.wks file in the + scripts/lib/image/canned-wks + directory and then changing the lines that specify the + target disk from which to boot. + + $ cp /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisk.wks /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisksdb.wks + + Next, the example modifies the + directdisksdb.wks file and changes all + instances of "--ondisk sda" + to "--ondisk sdb". + The example changes the following two lines and leaves the + remaining lines untouched: + + part /boot --source bootimg --ondisk sdb --fstype=msdos --label boot --active --align 1024 + part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024 + + Once the lines are changed, the example generates the + directdisksdb image. + The command points the process at the + core-image-minimal artifacts for the + Next Unit of Computing (nuc) + MACHINE + the local.conf. + + $ wic create directdisksdb -e core-image-minimal + Checking basic build environment... + Done. + + Creating image(s)... + + Info: The new image(s) can be found here: + /var/tmp/wic/build/directdisksdb-201310231131-sdb.direct + + The following build artifacts were used to create the image(s): + ROOTFS_DIR: /home/trz/yocto/yocto-image/build/tmp/work/nuc-poky-linux/core-image-minimal/1.0-r0/rootfs + BOOTIMG_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/nuc/usr/share + KERNEL_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/nuc/usr/src/kernel + NATIVE_SYSROOT: /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux + + + The image(s) were created using OE kickstart file: + /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisksdb.wks + + Continuing with the example, you can now directly + dd the image to a USB stick, or + whatever media for which you built your image, + and boot the resulting media: + + $ sudo dd if=/var/tmp/wic/build/directdisksdb-201310231131-sdb.direct of=/dev/sdb + 86018+0 records in + 86018+0 records out + 44041216 bytes (44 MB) copied, 13.0734 s, 3.4 MB/s + [trz@empanada tmp]$ sudo eject /dev/sdb + + +
+ +
+ Creating an Image Based on <filename>core-image-minimal</filename> and <filename>crownbay-noemgd</filename> + + + This example creates an image based on + core-image-minimal and a + crownbay-noemgd + MACHINE + that works right out of the box. + + $ wic create directdisk -e core-image-minimal + + Checking basic build environment... + Done. + + Creating image(s)... + + Info: The new image(s) can be found here: + /var/tmp/wic/build/directdisk-201309252350-sda.direct + + The following build artifacts were used to create the image(s): + + ROOTFS_DIR: /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs + BOOTIMG_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share + KERNEL_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel + NATIVE_SYSROOT: /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel + + The image(s) were created using OE kickstart file: + /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisk.wks + + +
+ +
+ Using a Modified Kickstart File and Running in Raw Mode + + + This next example manually specifies each build artifact + (runs in Raw Mode) and uses a modified kickstart file. + The example also uses the -o option + to cause wic to create the output + somewhere other than the default + /var/tmp/wic directory: + + $ wic create ~/test.wks -o /home/trz/testwic --rootfs-dir /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs --bootimg-dir /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share --kernel-dir /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel --native-sysroot /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux + + Creating image(s)... + + Info: The new image(s) can be found here: + /home/trz/testwic/build/test-201309260032-sda.direct + + The following build artifacts were used to create the image(s): + + ROOTFS_DIR: /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs + BOOTIMG_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share + KERNEL_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel + NATIVE_SYSROOT: /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel + + The image(s) were created using OE kickstart file: + /home/trz/test.wks + + For this example, + MACHINE + did not have to be specified in the + local.conf file since the artifact is + manually specified. + +
+
+ +
+ OpenEmbedded Kickstart (.wks) Reference + + + The current wic implementation supports + only the basic kickstart partitioning commands: + partition (or part + for short) and bootloader. + + + + Following is a listing of the commands, their syntax, and + meanings. + The commands are based on the Fedora kickstart documentation + but with modifications to reflect wic + capabilities. + + http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition + http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader + + + +
+ Command: part or partition + + + This command creates a partition on the system and uses the + following syntax: + + part <mntpoint> + + The <mntpoint> is where the + partition will be mounted and must be of one of the + following forms: + + /<path>: + For example, /, + /usr, and + /home + swap: + The partition will be used as swap space. + + + + + + Following are the supported options: + + --size: + The minimum partition size in MBytes. + Specify an integer value such as 500. + Do not append the number with "MB". + You do not need this option if you use + --source. + --source: + This option is a wic-specific option that can + currently have one of two values, "bootimg" or + "rootfs". + If --source rootfs is + used, it tells the wic command + to create a partition as large as needed to fill + with the contents of the root filesystem + (specified by the -r + wic option) and to fill it + with the contents of /rootfs. + + If --source bootimg + is used, it tells the wic + command to create a partition as large as needed to + fill with the contents of the boot partition + (specified by the -b + wic option). + Exactly what those contents are depend on the value + of the --fstype option for + that partition. + If --fstype=efi is specified, + the boot artifacts contained in HDDDIR are used, + and if --fstype=msdos is + specified, the boot artifacts found in + STAGING_DATADIR are used. + + --ondisk or --ondrive: + Forces the partition to be created on a particular + disk. + --fstype: + Sets the file system type for the partition. + Valid values are: + + msdos + + efi + + ext4 + + ext3 + + ext2 + + btrfs + + swap + + + --label label: + Specifies the label to give to the filesystem to + be made on the partition. + If the given label is already in use by another + filesystem, a new label is created for the + partition. + --active: + Marks the partition as active. + --align (in KBytes): + This option is specific to the Meego Image + Creator (mic) that says to start a partition on an + x KBytes boundary. + + +
+ +
+ Command: bootloader + + + This command specifies how the boot loader should be + and supports the following options: + + --timeout: + Specifies the number of seconds before the + bootloader times out and boots the default option. + + --append: + Specifies kernel parameters. + These will be added to the syslinux + APPEND or + grub kernel command line. + + The boot type is determined by the fstype of + the /boot mountpoint. + If the fstype is "msdos" the boot type is + "pcbios", otherwise it is the fstype, which + is currently "efi" (more to be added later). + + If the boot type is "efi", the image will + use grub and has one + menuentry: "boot". + If the boot type is "pcbios", the image + will use syslinux and has one menu label: "boot". + + Future updates will implement more options. + If you use anything that is not specifically + supported, results can be unpredictable. + + + +
+
+
+
Configuring the Kernel @@ -1936,18 +2691,18 @@ To use the menuconfig tool in the Yocto Project development - environment, you must build the tool using BitBake. + environment, you must launch it using BitBake. Thus, the environment must be set up using the &OE_INIT_FILE; or oe-init-build-env-memres script found in the Build Directory. - The following commands build and invoke menuconfig assuming the + The following commands run menuconfig assuming the Source Directory top-level folder is ~/poky: - $ cd ~/poky + $ cd poky $ source oe-init-build-env $ bitbake linux-yocto -c menuconfig @@ -1965,7 +2720,7 @@ Thus, the following commands from the shell in which you previously sourced the environment initialization script cleans the shared state cache and the WORKDIR - directory and then builds and launches menuconfig: + directory and then runs menuconfig: $ bitbake linux-yocto -c menuconfig @@ -1996,7 +2751,7 @@ x86 architecture, the .config file would be located here: - ~/poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.4.11+git1+84f... + poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.4.11+git1+84f... ...656ed30-r1/linux-qemux86-standard-build @@ -2069,7 +2824,7 @@ kernel's configuration. For example, suppose you had a set of configuration options in a file called myconfig.cfg. - If you put that file inside a directory named /linux-yocto + If you put that file inside a directory named linux-yocto that resides in the same directory as the kernel's append file and then add a SRC_URI statement such as the following to the kernel's append file, those configuration options will be picked up and applied when the kernel is built. @@ -2113,7 +2868,7 @@ .config file. Configuration items that appear twice in the same configuration fragment. - Configuration items tagged as "required" were overridden. + Configuration items tagged as "required" that were overridden. A board overrides a non-board specific option. Listed options not valid for the kernel being processed. @@ -2217,8 +2972,8 @@ The first step is to create a layer so you can isolate your changes: - $cd ~/poky - $mkdir meta-mylayer + $ cd ~/poky + $ mkdir meta-mylayer Creating a directory that follows the Yocto Project layer naming conventions sets up the layer for your changes. @@ -2285,7 +3040,7 @@ Edit the init/calibrate.c file to have the following changes: - void __cpuinit calibrate_delay(void) + void calibrate_delay(void) { unsigned long lpj; static bool printed; @@ -2528,7 +3283,14 @@ the conf/distro directory of your layer. You need to name it using your distribution name - (e.g. mydistro.conf). + (e.g. mydistro.conf). + + The + DISTRO + variable in your + local.conf file determines the + name of your distribution. + You can split out parts of your configuration file into include files and then "require" them from within your distribution configuration file. @@ -2644,12 +3406,12 @@ The following list presents the overall steps you need to consider and perform to create distributions with smaller - root filesystems, faster boot times, maintain your critical + root filesystems, achieve faster boot times, maintain your critical functionality, and avoid initial RAM disks: Determine your goals and guiding principles. - Understand what gives your image size. + Understand what contributes to your image size. Reduce the size of the root filesystem. @@ -2695,7 +3457,7 @@
- Understand What Gives Your Image Size + Understand What Contributes to Your Image Size It is easiest to have something to start with when creating @@ -2723,7 +3485,7 @@ Memory consists of static, dynamic, and temporary memory. Static memory is the TEXT (code), DATA (initialized data in the code), and BSS (uninitialized data) sections. - Dynamic memory contains memory that is allocated at runtime, + Dynamic memory represents memory that is allocated at runtime: stacks, hash tables, and so forth. Temporary memory is recovered after the boot process. This memory consists of memory used for decompressing @@ -2735,7 +3497,7 @@ To help you see where you currently are with kernel and root filesystem sizes, you can use two tools found in the Source Directory in - the scripts directory: + the scripts/tiny/ directory: ksize.py: Reports component sizes for the kernel build objects. @@ -2799,8 +3561,8 @@ You can apply a filter to the script to ignore files under a certain size. - This example filters out anything below 100 Kbytes. - The sizes reported by the tool are uncompressed and thus, + The previous example filters out any files below 100 Kbytes. + The sizes reported by the tool are uncompressed, and thus will be smaller by a relatively constant factor in a compressed root filesystem. When you examine your log file, you can focus on areas of the @@ -2830,7 +3592,7 @@ - Use the local.conf file to make changes. + Use your local.conf file to make changes. For example, to eliminate udev and glib, set the following in the local configuration file: @@ -2849,7 +3611,7 @@ using initramfs. Be aware that ext3 requires a 1 Mbyte journal. - If you are okay with running read-only you do not need this + If you are okay with running read-only, you do not need this journal. @@ -2870,7 +3632,7 @@ aspects. What subsystems do you enable? For what architecture are you building? - Which drivers do you build by default. + Which drivers do you build by default? You can modify the kernel source if you want to help with boot time. @@ -2889,7 +3651,7 @@ taken up with the built-in .o files for drivers, networking, core kernel files, filesystem, sound, and so forth. - The sizes reported by the tool are uncompressed and thus, + The sizes reported by the tool are uncompressed, and thus will be smaller by a relatively constant factor in a compressed kernel image. Look to reduce the areas that are large and taking up around @@ -3224,9 +3986,10 @@ The simplest form for a PR Service is for it to exist for a single host development system that builds the package feed (building system). - For this scenario, you can enable the PR Service by adding - the following to your local.conf - file in the + For this scenario, you can enable a local PR Service by + setting + PRSERV_HOST + in your local.conf file in the Build Directory: PRSERV_HOST = "localhost:0" @@ -3986,31 +4749,19 @@ As a way of making it easier to generate and make these IPK configuration files available on your - target, the meta-oe layer - provides a recipe called - distro-feed-configs, which - provides a package by the same name. - When you include this package into your image, it will - automatically generate and include a set of - *.conf files in the image's - /etc/opkg directory that will - provide your target's opkg - tool with any and all package databases your build will - generate. - The only catch is that this recipe cannot possibly - imagine your server's DNS name/IP address. - Consequently, somewhere in your configuration you need - to set a variable called - DISTRO_FEED_URI to point - to your server and the location within the - document-root that contains the databases. - For example: if you are serving your packages over HTTP, - your server's IP address is 192.168.7.1, and your - databases are located in a directory called + target, simply define + FEED_DEPLOYDIR_BASE_URI + to point to your server and the location within the + document-root which contains the databases. + For example: if you are serving your packages over + HTTP, your server's IP address is 192.168.7.1, and + your databases are located in a directory called BOARD-dir underneath your HTTP server's document-root, you need to set - DISTRO_FEED_URI to - http://192.168.7.1/BOARD-dir. + FEED_DEPLOYDIR_BASE_URI to + http://192.168.7.1/BOARD-dir and + a set of configuration files will be generated for you + in your target to work with this feed. @@ -4055,11 +4806,7 @@ - With this release of the Yocto Project, three recipes exist - that are "ptest-enabled": bash, - glib-2.0, and - dbus. - These three recipes are Autotool-enabled. + A recipe is "ptest-enabled" if it inherits ptest.
@@ -4356,7 +5103,7 @@ .bbappend files. You can do this by providing an expression with the BBMASK variable. - Here is an example: + Here is one example: BBMASK = "/meta-mymachine/recipes-maybe/" @@ -4397,6 +5144,45 @@ is the name of the recipe for which you want to enable automatic source revision updating. + + + In fact, the Yocto Project provides a distribution named + poky-bleeding, whose configuration + file contains the line: + + require conf/distro/include/poky-floating-revisions.inc + + This line pulls in the listed include file that contains + numerous lines of exactly that form: + + SRCREV_pn-gconf-dbus ?= "${AUTOREV}" + SRCREV_pn-matchbox-common ?= "${AUTOREV}" + SRCREV_pn-matchbox-config-gtk ?= "${AUTOREV}" + SRCREV_pn-matchbox-desktop ?= "${AUTOREV}" + SRCREV_pn-matchbox-keyboard ?= "${AUTOREV}" + SRCREV_pn-matchbox-panel ?= "${AUTOREV}" + SRCREV_pn-matchbox-panel-2 ?= "${AUTOREV}" + SRCREV_pn-matchbox-themes-extra ?= "${AUTOREV}" + SRCREV_pn-matchbox-terminal ?= "${AUTOREV}" + SRCREV_pn-matchbox-wm ?= "${AUTOREV}" + SRCREV_pn-matchbox-wm-2 ?= "${AUTOREV}" + SRCREV_pn-settings-daemon ?= "${AUTOREV}" + SRCREV_pn-screenshot ?= "${AUTOREV}" + SRCREV_pn-libfakekey ?= "${AUTOREV}" + SRCREV_pn-oprofileui ?= "${AUTOREV}" + . + . + . + + These lines allow you to experiment with building a + distribution that tracks the latest development source + for numerous packages. + Caution + The poky-bleeding distribution + is not tested on a regular basis. + Keep this in mind if you use it. + +
@@ -4416,7 +5202,7 @@ Supporting a read-only root filesystem requires that the system and applications do not try to write to the root filesystem. You must configure all parts of the target system to write - elsewhere, or to gracefully fail in the event of failing to + elsewhere, or to gracefully fail in the event of attempting to write to the root filesystem. @@ -4436,7 +5222,7 @@ or - EXTRA_IMAGE_FEATURES = "read-only-rootfs" + EXTRA_IMAGE_FEATURES += "read-only-rootfs" @@ -5201,58 +5987,21 @@ Examining Builds Using the Toaster API - Toaster is an Application Programming Interface (API) to the - OpenEmbedded build system, which uses BitBake. - The interface is a Representational State Transfer (REST) API - that queries for and returns build information using + Toaster is an Application Programming Interface (API) and + web-based interface to the OpenEmbedded build system, which uses + BitBake. + Both interfaces are based on a Representational State Transfer + (REST) API that queries for and returns build information using GET and JSON. - - - - Through the API you can do the following: - - See information about the tasks executed - and reused during the build. - See what is built (recipes and - packages) and what packages were installed into the final - image. - See performance-related information such - as build time, CPU usage, and disk I/O. - Examine error, warning and trace messages - to aid in debugging. - - - - - In summary, the search operation retrieves a set of objects from + These types of search operations retrieve sets of objects from a data store used to collect build information. - The result contains all the data for the objects being returned. + The results contain all the data for the objects being returned. You can order the results of the search by key and the search parameters are consistent for all object types. - For more information on installing and running Toaster, see the - "Installation and Running" - section of the "Toaster" wiki page. - For complete information on the API and its search operation - URI, parameters, and responses, see the - REST API Contracts - Wiki page. - -
- -
Profiling with OProfile @@ -5555,7 +6313,7 @@ are installed onto the target device for OProfileUI interaction. For a list of image features that ship with the Yocto Project, see the - "Images" + "Image Features" section in the Yocto Project Reference Manual. @@ -5625,7 +6383,7 @@ Downloaded archives reside in the Build Directory in - /tmp and are cleared up when they are no longer in use. + tmp and are cleared up when they are no longer in use. diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index a3e61cb6c25..c185522e15f 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml @@ -155,10 +155,11 @@ For more information on BSP layers, see the "BSP Layers" section in the Yocto Project Board Support Package (BSP) Developer's Guide. - Four BSPs exist that are part of the - Yocto Project release: genericx86, beagleboard, + Five BSPs exist that are part of the + Yocto Project release: genericx86, genericx86-64, + beagleboard, mpc8315e, and routerstationpro. - The recipes and configurations for these four BSPs are located and dispersed + The recipes and configurations for these five BSPs are located and dispersed within the Source Directory. On the other hand, BSP layers for Chief River, Crown Bay, Crystal Forest, Emenlow, Fish River Island 2, Jasper Forest, N450, NUC DC3217IYE, @@ -218,10 +219,10 @@ You can view a video presentation on "Building Custom Embedded Images with Yocto" at Free Electrons. - You can also find supplemental information in + You can also find supplemental information in the - The Board Support Package (BSP) Development Guide. - Finally, there is wiki page write up of the example also located + Yocto Project Board Support Package (BSP) Developer's Guide. + Finally, there is a wiki page write up of the example also located here that you might find helpful. @@ -1424,9 +1425,6 @@ "perf" section in the Yocto Project Profiling and Tracing Manual. - For information on LatencyTOP, see the - LatencyTOP - website. @@ -1470,7 +1468,14 @@ the "Clone from Yocto Git Repository" box, which would execute a git clone command to get the project's Metadata files. - + + Do not specify your BitBake Commander project + location as your Eclipse workspace. + Doing so causes an error indicating that the + current project overlaps the location of + another project. + This error occurs even if no such project exits. + Select Finish to create the project. @@ -1639,7 +1644,7 @@ meta/conf/bitbake.conf configuration file in the Source Directory: - S = ${WORKDIR}/${BP} + S = "${WORKDIR}/${BP}" You should be aware that many recipes override the S variable. For example, recipes that fetch their source from Git usually set @@ -1649,7 +1654,7 @@ BP represents the base recipe name, which consists of the name and version: - BP = ${BPN}-${PV} + BP = "${BPN}-${PV}" @@ -1670,7 +1675,7 @@ the following is the work directory for the acl recipe that creates the acl package: - ~/poky/build/tmp/work/i586-poky-linux/acl/2.2.51-r3/ + poky/build/tmp/work/i586-poky-linux/acl/2.2.51-r3/ @@ -1686,8 +1691,8 @@ for the acl package that is being built for a MIPS-based device: - ~/poky/build/tmp/work/mips-poky-linux/acl/2.2.51-r2 - ~/poky/build/tmp/work/mips-poky-linux/acl/2.2.51-r2/acl-2.2.51 + poky/build/tmp/work/mips-poky-linux/acl/2.2.51-r2 + poky/build/tmp/work/mips-poky-linux/acl/2.2.51-r2/acl-2.2.51 @@ -1698,6 +1703,7 @@ TMPDIR, TOPDIR, PACKAGE_ARCH, + MULTIMACH_TARGET_SYS, TARGET_OS, PN, PV, diff --git a/documentation/dev-manual/dev-manual-newbie.xml b/documentation/dev-manual/dev-manual-newbie.xml index 34326d10b63..473505ce623 100644 --- a/documentation/dev-manual/dev-manual-newbie.xml +++ b/documentation/dev-manual/dev-manual-newbie.xml @@ -429,15 +429,17 @@ For any supported release of Yocto Project, you can go to the Yocto Project Website and - select the "Downloads" tab and get a tarball of the release. - You can also go to this site to download any supported BSP tarballs. - Unpacking the tarball gives you a hierarchical Source Directory that lets you develop - using the Yocto Project. - - - - Once you are set up through either tarball extraction or a checkout of Git repositories, - you are ready to develop. + select the "Downloads" tab and get a released tarball of the + poky repository or any supported BSP tarballs. + Unpacking these tarballs gives you a snapshot of the released + files. + + The recommended method for setting up the Yocto Project + Source Directory and the + files for supported BSPs (e.g., meta-intel) is to + use Git to create a local copy of the + upstream repositories. + @@ -514,27 +516,40 @@ The TOPDIR variable points to the Build Directory. - You have a lot of flexibility when creating the Build Directory. - Following are some examples that show how to create the directory: + + You have a lot of flexibility when creating the Build + Directory. + Following are some examples that show how to create the + directory. + The examples assume your + Source Directory is + named poky: - Create the Build Directory in your current working directory - and name it build. - This is the default behavior. + Create the Build Directory inside your + Source Directory and let the name of the Build + Directory default to build: - $ source &OE_INIT_PATH; + $ cd $HOME/poky + $ source &OE_INIT_FILE; - Provide a directory path and specifically name the build - directory. - This next example creates a Build Directory named YP-&POKYVERSION; - in your home directory within the directory mybuilds. - If mybuilds does not exist, the directory is created for you: + Create the Build Directory inside your + home directory and specifically name it + test-builds: - $ source &OE_INIT_PATH; $HOME/mybuilds/YP-&POKYVERSION; + $ cd $HOME + $ source poky/&OE_INIT_FILE; test-builds - Provide an existing directory to use as the Build Directory - and use the default build name. + Provide a directory path and + specifically name the build directory. + Any intermediate folders in the pathname must + exist. + This next example creates a Build Directory named + YP-&POKYVERSION; + in your home directory within the existing + directory mybuilds: - $ source &OE_INIT_PATH; $HOME/mybuilds/ + $cd $HOME + $ source $HOME/poky/&OE_INIT_FILE; $HOME/mybuilds/YP-&POKYVERSION; @@ -647,6 +662,17 @@ PV, and PE). + Package Groups: + Arbitrary groups of software Recipes. + You use package groups to hold recipes that, when built, + usually accomplish a single task. + For example, a package group could contain the recipes for a + companyā€™s proprietary or value-add software. + Or, the package group could contain the recipes that enable + graphics. + A package group is really just another recipe. + Because package group files are recipes, they end with the + .bb filename extension. Poky: The term "poky" can mean several things. In its most general sense, it is an open-source project that was initially developed by OpenedHand. With OpenedHand, poky was developed off of the existing OpenEmbedded @@ -716,13 +742,12 @@ see the "Repositories, Tags, and Branches" section. - Tasks: Arbitrary groups of software Recipes. - You use tasks to hold recipes that, when built, usually accomplish a single task. - For example, a task could contain the recipes for a companyā€™s proprietary or value-add software. - Or, the task could contain the recipes that enable graphics. - A task is really just another recipe. - Because task files are recipes, they end with the .bb filename - extension. + Task: + A unit of execution for BitBake (e.g. + do_compile, + do_fetch, do_patch, + and so forth). + Upstream: A reference to source code or repositories that are not local to the development system but located in a master area that is controlled by the maintainer of the source code. @@ -807,7 +832,8 @@ Git - The Yocto Project uses Git, which is a free, open source distributed version control system. + The Yocto Project makes extensive use of Git, + which is a free, open source distributed version control system. Git supports distributed development, non-linear development, and can handle large projects. It is best that you have some fundamental understanding of how Git tracks projects and how to work with Git if you are going to use the Yocto Project for development. @@ -911,7 +937,7 @@ local working branch based on a branch name, your local environment matches the "tip" of that development branch at the time you created your local branch, which could be - different than the files at the time of a similarly named release. + different from the files at the time of a similarly named release. In other words, creating and checking out a local branch based on the &DISTRO_NAME; branch name is not the same as cloning and checking out the master branch. @@ -1004,7 +1030,7 @@ will allow the change, and for ultimately pushing the change from your local Git repository into the projectā€™s upstream (or master) repository. git status: Reports any modified files that - possibly need staged and committed. + possibly need to be staged and committed. git checkout <branch-name>: Changes your working branch. This command is analogous to "cd". @@ -1281,10 +1307,9 @@ Board Support Package (BSP) README Files: For BSP maintainers of supported BSPs, you can examine individual BSP README files. - Alternatively, you can examine the - MAINTAINERS file, which is found in the - meta-intel, for a list of all supported - BSP maintainers. + In addition, some layers (such as the meta-intel layer), + include a MAINTAINERS file which contains + a list of all supported BSP maintainers for that layer. Search by File: Using Git, you can enter the @@ -1459,8 +1484,8 @@ For help on using these scripts, simply provide the -h argument as follows: - $ ~/poky/scripts/create-pull-request -h - $ ~/poky/scripts/send-pull-request -h + $ poky/scripts/create-pull-request -h + $ poky/scripts/send-pull-request -h diff --git a/documentation/dev-manual/dev-manual-start.xml b/documentation/dev-manual/dev-manual-start.xml index 0729baa0dad..c1d89bc7b99 100644 --- a/documentation/dev-manual/dev-manual-start.xml +++ b/documentation/dev-manual/dev-manual-start.xml @@ -55,12 +55,12 @@ Getting Set Up - Here is what you need to get set up to use the Yocto Project: + Here is what you need to use the Yocto Project: - Host System: You should have a reasonably current - Linux-based host system. + Host System: + You should have a reasonably current Linux-based host system. You will have the best results with a recent release of Fedora, - OpenSUSE, Debian, Ubuntu, or CentOS as these releases are frequently tested against the Yocto Project + openSUSE, Debian, Ubuntu, or CentOS as these releases are frequently tested against the Yocto Project and officially supported. For a list of the distributions under validation and their status, see the "Supported Linux Distributions" section @@ -69,23 +69,35 @@ You should also have about 100 gigabytes of free disk space for building images. - Packages: The OpenEmbedded build system - requires certain packages exist on your development system (e.g. Python 2.6 or 2.7). + Packages: + The OpenEmbedded build system requires that certain packages + exist on your development system (e.g. Python 2.6 or 2.7). See "The Packages" section in the Yocto Project Quick Start and the "Required Packages for the Host Development System" section in the Yocto Project Reference Manual for the exact package requirements and the installation commands to install - them for the supported distributions. - + them for the supported distributions. Yocto Project Release: - You need a release of the Yocto Project. - You set that up with a local Source Directory - one of two ways depending on whether you - are going to contribute back into the Yocto Project or not. - - Regardless of the method you use, this manual refers to the resulting local - hierarchical set of files as the "Source Directory." + You need a release of the Yocto Project installed locally on + your development system. + This local area is referred to as the + Source Directory + and is created when you use + Git to clone a local copy + of the upstream poky repository, + or when you download an official release of the corresponding + tarball. + Working from a copy of the upstream repository allows you + to contribute back into the Yocto Project or simply work with + the latest software on a development branch. + Because Git maintains and creates an upstream repository with + a complete history of changes and you are working with a local + clone of that repository, you have access to all the Yocto + Project development branches and tag names used in the upstream + repository. + You can view the Yocto Project Source Repositories at + Tarball Extraction: @@ -97,27 +109,40 @@ directory of your choice. For example, the following command extracts the Yocto Project &DISTRO; release tarball - into the current working directory and sets up the local Source Directory - with a top-level folder named &YOCTO_POKY;: + into the current working directory and sets up the local + Source Directory + with a top-level folder named + &YOCTO_POKY;: $ tar xfj &YOCTO_POKY_TARBALL; - This method does not produce a local Git repository. - Instead, you simply end up with a snapshot of the release. - Git Repository Method: If you are going to be contributing - back into the Yocto Project or you simply want to keep up - with the latest developments, you should use Git commands to set up a local - Git repository of the upstream poky source repository. - Doing so creates a repository with a complete history of changes and allows - you to easily submit your changes upstream to the project. - Because you clone the repository, you have access to all the Yocto Project development - branches and tag names used in the upstream repository. - You can view the Yocto Project Source Repositories at - - The following transcript shows how to clone the poky - Git repository into the current working directory. - The command creates the local repository in a directory named poky. - For information on Git used within the Yocto Project, see the + This method does not produce a local Git + repository. + Instead, you simply end up with a snapshot of the + release. + Git Repository Method: + If you are going to be contributing back into the Yocto + Project or you simply want to keep up with the latest + developments, you should use Git commands to set up a + local Git repository of the upstream + poky source repository. + Doing so creates a repository with a complete history + of changes and allows you to easily submit your changes + upstream to the project. + Because you clone the repository, you have access to all + the Yocto Project development branches and tag names + used in the upstream repository. + You can view the Yocto Project Source Repositories + at + + + The following transcript shows how to clone the + poky Git repository into the + current working directory. + The command creates the local repository in a directory + named poky. + For information on Git used within the Yocto Project, + see the "Git" section. $ git clone git://git.yoctoproject.org/poky @@ -127,16 +152,19 @@ remote: Total 203728 (delta 147444), reused 202891 (delta 146614) Receiving objects: 100% (203728/203728), 95.54 MiB | 308 KiB/s, done. Resolving deltas: 100% (147444/147444), done. - - For another example of how to set up your own local Git repositories, see this - - wiki page, which describes how to create both poky - and meta-intel Git repositories. + + For another example of how to set up your own local + Git repositories, see this + wiki page, + which describes how to create both + poky and + meta-intel Git repositories. + Yocto Project Kernel: If you are going to be making modifications to a supported Yocto Project kernel, you need to establish local copies of the source. - You can find Git repositories of supported Yocto Project Kernels organized under + You can find Git repositories of supported Yocto Project kernels organized under "Yocto Linux Kernel" in the Yocto Project Source Repositories at . This setup can involve creating a bare clone of the Yocto Project kernel and then @@ -155,7 +183,7 @@ linux-yocto-3.10.git, while the copy is named my-linux-yocto-3.10-work: - $ git clone --bare git://git.yoctoproject.org/linux-yocto-3.10 linux-yocto-3.10.git + $ git clone ‐‐bare git://git.yoctoproject.org/linux-yocto-3.10 linux-yocto-3.10.git Cloning into bare repository 'linux-yocto-3.10.git'... remote: Counting objects: 3364487, done. remote: Compressing objects: 100% (507178/507178), done. @@ -221,29 +249,39 @@ See the "BSP Layers" - section in the Yocto Project Board Support Package (BSP) Developer's Guide for more - information on BSP Layers. + section in the Yocto Project Board Support Package (BSP) + Developer's Guide for more information on BSP Layers. - Tarball Extraction: You can download any released - BSP tarball from the same "Downloads" page of the - Yocto Project Website + Tarball Extraction: + You can download any released BSP tarball from the same + "Downloads" page of the Yocto Project + Website to get the Yocto Project release. Once on the "Download" page, look to the right of the page and scroll down to find the BSP tarballs. - Once you have the tarball, just extract it into a directory of your choice. - Again, this method just produces a snapshot of the BSP layer in the form - of a hierarchical directory structure. - Git Repository Method: If you are working - with a local Git repository for your Source Directory, you should also use this method - to set up the meta-intel Git repository. - You can locate the meta-intel Git repository in the - "Yocto Metadata Layers" area of the Yocto Project Source Repositories at + Once you have the tarball, just extract it into a + directory of your choice. + Again, this method just produces a snapshot of the BSP + layer in the form of a hierarchical directory + structure. + Git Repository Method: + If you are working with a local Git repository for your + Source Directory, you should also use this method to + set up the meta-intel Git + repository. + You can locate the meta-intel Git + repository in the "Yocto Metadata Layers" area of the + Yocto Project Source Repositories at . - Typically, you set up the meta-intel Git repository inside + Using + Git to create a local clone + of the upstream repository can be helpful if you are + working with BSPs. + Typically, you set up the + meta-intel Git repository inside the Source Directory. - For example, the following transcript shows the steps to clone the - meta-intel - Git repository inside the local poky Git repository. + For example, the following transcript shows the steps + to clone meta-intel. $ cd ~/poky $ git clone git://git.yoctoproject.org/meta-intel.git @@ -253,12 +291,12 @@ remote: Total 7366 (delta 3997), reused 7299 (delta 3930) Receiving objects: 100% (7366/7366), 2.31 MiB | 95 KiB/s, done. Resolving deltas: 100% (3997/3997), done. - - The same + + The same wiki page referenced earlier covers how to - set up the meta-intel Git repository. - + set up the meta-intel Git + repository. Eclipse Yocto Plug-in: If you are developing applications using the Eclipse Integrated Development Environment (IDE), diff --git a/documentation/dev-manual/dev-manual.xml b/documentation/dev-manual/dev-manual.xml index e3a134026f3..ca400fbd188 100644 --- a/documentation/dev-manual/dev-manual.xml +++ b/documentation/dev-manual/dev-manual.xml @@ -56,6 +56,11 @@ October 2013 Released with the Yocto Project 1.5 Release. + + 1.5.1 + Sometime in 2013 + Released with the Yocto Project 1.5.1 Release. + @@ -72,11 +77,10 @@ - Due to production processes, there could be differences between the Yocto Project - documentation bundled in the release tarball and the - Yocto Project Development Manual on - the Yocto Project website. - For the latest version of this manual, see the manual on the website. + For the latest version of this manual associated with this + Yocto Project release, see the + Yocto Project Development Manual + from the Yocto Project website. diff --git a/documentation/kernel-dev/kernel-dev-common.xml b/documentation/kernel-dev/kernel-dev-common.xml index 11a527ce24e..a152f9fbbef 100644 --- a/documentation/kernel-dev/kernel-dev-common.xml +++ b/documentation/kernel-dev/kernel-dev-common.xml @@ -95,7 +95,7 @@ FILESEXTRAPATHS variable as follows: - FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}" + FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" The path ${THISDIR}/${PN} expands to "linux-yocto" in the current directory for this diff --git a/documentation/kernel-dev/kernel-dev-maint-appx.xml b/documentation/kernel-dev/kernel-dev-maint-appx.xml index 5f9788aa31b..a7c144ff752 100644 --- a/documentation/kernel-dev/kernel-dev-maint-appx.xml +++ b/documentation/kernel-dev/kernel-dev-maint-appx.xml @@ -45,7 +45,7 @@ Here is an example that assumes the local Git repository for the kernel is in a top-level directory named linux-yocto-3.4: - $ cd ~/linux-yocto-3.4 + $ cd linux-yocto-3.4 $ git checkout -b meta origin/meta Once you have checked out and switched to the meta branch, @@ -208,7 +208,7 @@ the build tree directory. The files include the final .config file, all the .o files, the .a files, and so forth. - Since each machine or BSP has its own separate + Since each machine or BSP has its own separate Build Directory in its own separate branch of the Git repository, you can easily switch between different builds. diff --git a/documentation/kernel-dev/kernel-dev.xml b/documentation/kernel-dev/kernel-dev.xml index 60e20ede959..f4cddba76ee 100644 --- a/documentation/kernel-dev/kernel-dev.xml +++ b/documentation/kernel-dev/kernel-dev.xml @@ -41,6 +41,11 @@ October 2013 Released with the Yocto Project 1.5 Release. + + 1.5.1 + Sometime in 2013 + Released with the Yocto Project 1.5.1 Release. + @@ -54,11 +59,10 @@ the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales as published by Creative Commons. - Due to production processes, there could be differences between the Yocto Project - documentation bundled in the release tarball and the - Yocto Project Linux Kernel Development Manual on - the Yocto Project website. - For the latest version of this manual, see the manual on the website. + For the latest version of this manual associated with this + Yocto Project release, see the + Yocto Project Linux Kernel Development Manual + from the Yocto Project website. diff --git a/documentation/poky.ent b/documentation/poky.ent index 4a241cdb008..80ccc63c57d 100644 --- a/documentation/poky.ent +++ b/documentation/poky.ent @@ -1,9 +1,9 @@ - - + + - - - + + + @@ -54,7 +54,7 @@ - - If you've already build a stripped image, you can generate + If you've already built a stripped image, you can generate debug packages (xxx-dbg) which you can manually install as needed. diff --git a/documentation/profile-manual/profile-manual-usage.xml b/documentation/profile-manual/profile-manual-usage.xml index 8fef7d60ade..5279730a5b4 100644 --- a/documentation/profile-manual/profile-manual-usage.xml +++ b/documentation/profile-manual/profile-manual-usage.xml @@ -22,7 +22,7 @@ Don't let the fact that it's part of the kernel fool you into thinking that it's only for tracing and profiling the kernel - you can indeed - use it to trace and profile just the kernel , but you can also use it + use it to trace and profile just the kernel, but you can also use it to profile specific applications separately (with or without kernel context), and you can also use it to trace and profile the kernel and all applications on the system simultaneously to gain a system-wide @@ -30,10 +30,10 @@ - In many ways, it aims to be a superset of all the tracing and profiling + In many ways, perf aims to be a superset of all the tracing and profiling tools available in Linux today, including all the other tools covered in this HOWTO. The past couple of years have seen perf subsume a lot - of the functionality of those other tools, and at the same time those + of the functionality of those other tools and, at the same time, those other tools have removed large portions of their previous functionality and replaced it with calls to the equivalent functionality now implemented by the perf subsystem. Extrapolation suggests that at @@ -126,7 +126,7 @@ wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 The quickest and easiest way to get some basic overall data about - what's going on for a particular workload it to profile it using + what's going on for a particular workload is to profile it using 'perf stat'. 'perf stat' basically profiles using a few default counters and displays the summed counts at the end of the run: @@ -201,7 +201,7 @@ As our first attempt at profiling this workload, we'll simply run 'perf record', handing it the workload we want to profile (everything after 'perf record' and any perf options we hand - it - here none - will be executedin a new shell). perf collects + it - here none - will be executed in a new shell). perf collects samples until the process exits and records them in a file named 'perf.data' in the current working directory. @@ -241,7 +241,7 @@ Notice also that the above report shows an entry for 'busybox', which is the executable that implements 'wget' in Yocto, but that instead of a useful function name in that entry, it displays - an not-so-friendly hex value instead. The steps below will show + a not-so-friendly hex value instead. The steps below will show how to fix that problem. @@ -308,7 +308,7 @@ - Notice also that here there's also a case where the a hex value + Notice also that here there's also a case where the hex value is displayed in the callstack, here in the expanded sys_clock_gettime() function. Later we'll see it resolve to a userspace function call in busybox. @@ -367,7 +367,7 @@ To generate the debug info for the packages in the image, we can - to add dbg-pkgs to EXTRA_IMAGE_FEATURES in local.conf. For example: + add dbg-pkgs to EXTRA_IMAGE_FEATURES in local.conf. For example: EXTRA_IMAGE_FEATURES = "debug-tweaks tools-profile dbg-pkgs" @@ -462,7 +462,7 @@ The tracing and profiling infrastructure in Linux has become unified in a way that allows us to use the same tool with a completely different set of counters, not just the standard - hardware counters that traditionally tools have had to restrict + hardware counters that traditional tools have had to restrict themselves to (of course the traditional tools can also make use of the expanded possibilities now available to them, and in some cases have, as mentioned previously). @@ -828,7 +828,7 @@ - Luckily, there is general-purpose way to handle such needs, + Luckily, there is a general-purpose way to handle such needs, called 'programming languages'. Making programming languages easily available to apply to such problems given the specific format of data is called a 'programming language binding' for @@ -925,9 +925,9 @@ Each event handler function in the generated code is modified to do this. For convenience, we define a common function called - inc_counts() that each handler calls; inc_counts simply tallies + inc_counts() that each handler calls; inc_counts() simply tallies a count for each event using the 'counts' hash, which is a - specialized has function that does Perl-like autovivification, a + specialized hash function that does Perl-like autovivification, a capability that's extremely useful for kinds of multi-level aggregation commonly used in processing traces (see perf's documentation on the Python language binding for details): @@ -1377,7 +1377,7 @@ the /tracing directory of the mounted debugfs filesystem (Yocto follows the standard convention and mounts it at /sys/kernel/debug). Here's a listing of all the files - found in /sys/kernel/debug/tracing on a Yocto system.: + found in /sys/kernel/debug/tracing on a Yocto system: root@sugarbay:/sys/kernel/debug/tracing# ls README kprobe_events trace @@ -1634,7 +1634,7 @@ Also notice that there are various annotations on the left hand side of the display. For example if the total time it took for a given function to execute is above a certain - threshold, and exclamation point or plus sign appears on the + threshold, an exclamation point or plus sign appears on the left hand side. Please see the ftrace documentation for details on all these fields. @@ -1842,7 +1842,7 @@ You can enable any number of events or complete subsystems (by using the 'enable' file in the subsystem directory) and - get am arbitrarily fine-grained idea of what's going on in the + get an arbitrarily fine-grained idea of what's going on in the system by enabling as many of the appropriate tracepoints as applicable. @@ -1878,14 +1878,14 @@ in /sys/kernel/debug/tracing, allowing users to specify specific particular events within the /sys/kernel/debug/tracing/events/ subdirectory and to collect - traces and avoiding having to deal with those details directly. + traces and avoid having to deal with those details directly. As yet another layer on top of that, kernelshark provides a GUI that allows users to start and stop traces and specify sets of events using an intuitive interface, and view the - output as both trace events and as a per-cpu graphical + output as both trace events and as a per-CPU graphical display. It directly uses 'trace-cmd' as the plumbing that accomplishes all that underneath the covers (and actually displays the trace-cmd command it uses, as we'll see). @@ -1896,13 +1896,13 @@ root@sugarbay:~# kernelshark - The bring up the 'Capture' dialog by choosing from the + Then bring up the 'Capture' dialog by choosing from the kernelshark menu: Capture | Record That will display the following dialog, which allows you to - choose on or more events (or even one or more complete + choose one or more events (or even one or more complete subsystems) to trace: @@ -1911,7 +1911,7 @@ - Note that these are exactly the same set of events described + Note that these are exactly the same sets of events described in the previous trace events subsystem section, and in fact is where trace-cmd gets them for kernelshark. @@ -1980,13 +1980,15 @@ Documentation/trace/events.txt - There are a nice series of articles on using + There is a nice series of articles on using ftrace and trace-cmd at LWN: Debugging the kernel using Ftrace - part 1 Debugging the kernel using Ftrace - part 2 + Secrets of the Ftrace function tracer + trace-cmd: A front-end for Ftrace @@ -2022,7 +2024,7 @@ SystemTap tutorial simply prints a line every time any process on the system open()s a file. For each line, it prints the executable name of the - program that opened the file, along with its pid, and the name + program that opened the file, along with its PID, and the name of the file it opened (or tried to open), which it extracts from the open syscall's argstr. @@ -2096,6 +2098,15 @@ booted. The 'crosstap' script provides details on how to do this if you run the script on the host without having done a build: + + SystemTap, which uses 'crosstap', assumes you can establish an + ssh connection to the remote target. + Please refer to the crosstap wiki page for details on verifying + ssh connections at + . + Also, the ability to ssh into the target system is not enabled + by default in *-minimal images. + $ crosstap root@192.168.1.88 trace_open.stp @@ -2122,9 +2133,6 @@ the EXTRA_IMAGE_FEATURES variable ] $ bitbake core-image-sato - [ NOTE that 'crosstap' needs to be able to ssh into the target - system, which isn't enabled by default in -minimal images. ] - Once you've build the image on the host system, you're ready to boot it (or the equivalent pre-built image) and use 'crosstap' to probe it (you need to source the environment as usual first): @@ -2195,7 +2203,7 @@ If everything worked as planned, you should see something like this (enter the password when prompted, or press enter - if its set up to use no password): + if it's set up to use no password): $ crosstap root@192.168.7.2 trace_open.stp root@192.168.7.2's password: @@ -2240,7 +2248,7 @@ - For the the section that deals with oprofile from the command-line, + For the section that deals with running oprofile from the command-line, we assume you've ssh'ed to the host and will be running oprofile on the target. @@ -2260,7 +2268,7 @@ Oprofile as configured in Yocto is a system-wide profiler (i.e. the version in Yocto doesn't yet make use of the perf_events interface which would allow it to profile - specific processes and workloads). It's relies on hardware + specific processes and workloads). It relies on hardware counter support in the hardware (but can fall back to a timer-based mode), which means that it doesn't take advantage of tracepoints or other event sources for example. @@ -2281,8 +2289,8 @@ The oprofile daemon should already be running, but before you start profiling, you may need to change some settings - and some of these settings may require the daemon not - be running. One of these settings is the path the the + and some of these settings may require the daemon to not + be running. One of these settings is the path to the vmlinux file, which you'll want to set using the --vmlinux option if you want the kernel profiled: @@ -2313,7 +2321,7 @@ Using log file /var/lib/oprofile/samples/oprofiled.log Daemon started. - If we get the status again we now see our updated settings: + If we check the status again we now see our updated settings: root@crownbay:~# opcontrol --status Daemon paused: pid 1649 @@ -2322,7 +2330,7 @@ Image filter: none Call-graph depth: 6 - We're now in a position to run a profile. For that we used + We're now in a position to run a profile. For that we use 'opcontrol --start': root@crownbay:~# opcontrol --start @@ -2334,10 +2342,10 @@ Connecting to downloads.yoctoproject.org (140.211.169.59:80) linux-2.6.19.2.tar.b 100% |*******************************| 41727k 0:00:00 ETA - To stop the profile we use 'opcontrol --shudown', which not + To stop the profile we use 'opcontrol --shutdown', which not only stops the profile but shuts down the daemon as well: - root@crownbay:~# opcontrol --start + root@crownbay:~# opcontrol --shutdown Stopping profiling. Killing daemon. @@ -2896,7 +2904,7 @@ Once you've applied the above commits and built and booted your - image (you need to build the core-image-sato-sdk image or the + image (you need to build the core-image-sato-sdk image or use one of the other methods described in the General Setup section), you're ready to start tracing. @@ -2905,7 +2913,7 @@ Collecting and viewing a trace on the target (inside a shell) - First, from the target, ssh to the target: + First, from the host, ssh to the target: $ ssh -l root 192.168.1.47 The authenticity of host '192.168.1.47 (192.168.1.47)' can't be established. @@ -3006,7 +3014,7 @@ Collecting and viewing a userspace trace on the target (inside a shell) - For lttng userspace tracing, you need to have a properly + For LTTng userspace tracing, you need to have a properly instrumented userspace program. For this example, we'll use the 'hello' test program generated by the lttng-ust build. @@ -3028,7 +3036,7 @@ - First, from the target, ssh to the target: + First, from the host, ssh to the target: $ ssh -l root 192.168.1.47 The authenticity of host '192.168.1.47 (192.168.1.47)' can't be established. @@ -3594,7 +3602,7 @@ It's also possible to trace block I/O using only trace events subsystem, which can be useful for casual tracing - if you don't want bother dealing with the userspace tools. + if you don't want to bother dealing with the userspace tools. diff --git a/documentation/profile-manual/profile-manual.xml b/documentation/profile-manual/profile-manual.xml index 59a82d0126b..bafecff7e22 100644 --- a/documentation/profile-manual/profile-manual.xml +++ b/documentation/profile-manual/profile-manual.xml @@ -41,6 +41,11 @@ October 2013 Released with the Yocto Project 1.5 Release. + + 1.5.1 + Sometime in 2013 + Released with the Yocto Project 1.5.1 Release. + @@ -57,11 +62,10 @@ - Due to production processes, there could be differences between the Yocto Project - documentation bundled in the release tarball and the - Yocto Project Tracing and Profiling Manual on - the Yocto Project website. - For the latest version of this manual, see the manual on the website. + For the latest version of this manual associated with this + Yocto Project release, see the + Yocto Project Profiling and Tracing Manual + from the Yocto Project website. diff --git a/documentation/ref-manual/closer-look.xml b/documentation/ref-manual/closer-look.xml index 25c03e0a52a..e13f5c1601c 100644 --- a/documentation/ref-manual/closer-look.xml +++ b/documentation/ref-manual/closer-look.xml @@ -267,7 +267,7 @@ The previous section described the user configurations that - define the BitBake's global behavior. + define BitBake's global behavior. This section takes a closer look at the layers the build system uses to further control the build. These layers provide Metadata for the software, machine, and @@ -363,7 +363,7 @@ for what you typically find in the distribution layer: classes: - Class files (.bbclass) holds + Class files (.bbclass) hold common functionality that can be shared among recipes in the distribution. When your recipes inherit a class, they take on the @@ -381,7 +381,7 @@ recipes-*: Recipes and append files that affect common functionality across the distribution. - This area could include recipes and append files to + This area could include recipes and append files to add distribution-specific configuration, initialization scripts, custom image recipes, and so forth. @@ -421,7 +421,7 @@ Metadata can exist for multiple formfactors, graphics support systems, and so forth. - While the figure shows several recipe-* + While the figure shows several recipes-* directories, not all these directories appear in all BSP layers. @@ -487,7 +487,7 @@ Another area that plays a significant role in where source files - comes from is pointed to by the + come from is pointed to by the DL_DIR variable. This area is a cache that can hold previously downloaded source. @@ -546,7 +546,7 @@ The canonical method through which to include a local project is to use the externalsrc.bbclass - class to include local project. + class to include that local project. You use either the local.conf or a recipe's append file to override or set the recipe to point to the local directory on your disk to pull @@ -693,7 +693,7 @@ The do_fetch and do_unpack tasks fetch the source files - and unpack them into a working directory. + and unpack them into the work directory. By default, everything is accomplished in the Build Directory, which has a defined structure. @@ -704,11 +704,11 @@ - Unpacked source source files are pointed to by the + Unpacked source files are pointed to by the S variable. Each recipe has an area in the Build Directory where the unpacked source code resides. - The name of directory for any given recipe is defined from + The name of that directory for any given recipe is defined from several different variables. You can see the variables that define these directories by looking at the figure: @@ -809,7 +809,7 @@ variable. For information on how this variable works within that class, see the - meta/classes/autotools.bbclass. + meta/classes/autotools.bbclass file. do_compile: Once a configuration task has been satisfied, BitBake @@ -818,8 +818,8 @@ Compilation occurs in the directory pointed to by the B variable. - Realize that the B directory, by - default, is the same as the + Realize that the B directory is, by + default, the same as the S directory. do_install: @@ -948,7 +948,7 @@ During image generation, the build system attempts to run - all post installation scripts. + all post-installation scripts. Any that fail to run on the build host are run on the target when the target system is first booted. If you are using a @@ -1052,7 +1052,7 @@ The images produced by the OpenEmbedded build system are compressed forms of the - root filesystems that are ready to boot on a target device. + root filesystem that are ready to boot on a target device. You can see from the general Yocto Project Development Environment figure that BitBake output in part consists of images. @@ -1062,14 +1062,14 @@ For a list of example images that the Yocto Project provides, - the + see the "Images" chapter. Images are written out to the Build Directory - inside the deploy/images/<machine>/ + inside the tmp/deploy/images/<machine>/ folder as shown in the figure. This folder contains any files expected to be loaded on the target device. diff --git a/documentation/ref-manual/faq.xml b/documentation/ref-manual/faq.xml index 69b679bbf7c..c7ccaafde67 100644 --- a/documentation/ref-manual/faq.xml +++ b/documentation/ref-manual/faq.xml @@ -31,31 +31,19 @@ - I only have Python 2.4 or 2.5 but BitBake requires Python 2.6 or 2.7. + My development system does not have Python 2.7.3 or greater, + which the Yocto Project requires. Can I still use the Yocto Project? - You can use a stand-alone tarball to provide Python 2.6. - You can find pre-built 32 and 64-bit versions of Python 2.6 at the following locations: - - 32-bit tarball - 64-bit tarball - - - - These tarballs are self-contained with all required libraries and should work - on most Linux systems. - To use the tarballs extract them into the root - directory and run the appropriate command: - - $ export PATH=/opt/poky/sysroots/i586-pokysdk-linux/usr/bin/:$PATH - $ export PATH=/opt/poky/sysroots/x86_64-pokysdk-linux/usr/bin/:$PATH - - - - Once you run the command, BitBake uses Python 2.6. + You can get the required tools on your host development + system a couple different ways (i.e. building a tarball or + downloading a tarball). + See the + "Required Git, tar, and Python Versions" + section for steps on how to update your build tools. @@ -211,7 +199,7 @@ - + @@ -682,7 +670,7 @@ Yes - you can easily do this. When you use BitBake to build an image, all the build output - goes into the directory created when you run the + goes into the directory created when you run the build environment setup script (i.e. &OE_INIT_FILE; or diff --git a/documentation/ref-manual/introduction.xml b/documentation/ref-manual/introduction.xml index b1a5c0e1750..bcac4c750fa 100644 --- a/documentation/ref-manual/introduction.xml +++ b/documentation/ref-manual/introduction.xml @@ -121,11 +121,6 @@ - Refer to - OE and Your Distro and - Required Software - for information for information about dependencies and - requirements. If you encounter problems, please go to Yocto Project Bugzilla and submit a bug. @@ -251,11 +246,11 @@
- OpenSUSE Packages + openSUSE Packages The following list shows the required packages by function - given a supported OpenSUSE Linux distribution: + given a supported openSUSE Linux distribution: Essentials: Packages needed to build an image for a headless @@ -346,8 +341,8 @@ you can resolve this by either downloading a pre-built tarball containing these tools, or building such a tarball on another system. - Regardless of the method, once you have the tarball you simply - install it somewhere on you system, such as a directory in your + Regardless of the method, once you have the tarball, you simply + install it somewhere on your system, such as a directory in your home directory, and then source the environment script provided, which adds the tools into PATH and sets any other environment variables required to run the tools. @@ -358,7 +353,7 @@ If downloading a pre-built tarball, locate the *.sh at - . + . @@ -371,7 +366,7 @@ variable determines whether you build tools for a 32-bit or 64-bit system. - Once the build completes, you can find the file that installs the + Once the build completes, you can find the file that installs the tools in the tmp/deploy/sdk subdirectory of the Build Directory. diff --git a/documentation/ref-manual/migration.xml b/documentation/ref-manual/migration.xml index bb6203998be..9ec38e146ec 100644 --- a/documentation/ref-manual/migration.xml +++ b/documentation/ref-manual/migration.xml @@ -34,7 +34,7 @@ The shared state cache (sstate-cache), as pointed to by SSTATE_DIR, by default - now has two-character subdirectories to prevent issues rising + now has two-character subdirectories to prevent issues arising from too many files in the same directory. Also, native sstate-cache packages will go into a subdirectory named using the distro ID string. @@ -157,7 +157,7 @@ LIC_FILES_CHKSUM, and so forth. See the - "Package Groups - packagegroup.bbclass" + "packagegroup.bbclass" section for further details.
@@ -755,7 +755,7 @@ Build Directory rather than TMPDIR. - Doing so makes it a easier to delete + Doing so makes it easier to delete TMPDIR and preserve the build history. Additionally, data for produced SDKs is now split by IMAGE_NAME. @@ -829,10 +829,10 @@
- <filename>/run</filename> + <filename>run</filename> - The /run directory from the Filesystem + The run directory from the Filesystem Hierarchy Standard 3.0 has been introduced. You can find some of the implications for this change here. @@ -886,7 +886,7 @@ For more information, see the - "Package Groups - packagegroup.bbclass" + "packagegroup.bbclass" section.
@@ -1033,7 +1033,7 @@
base-files: Remove the unnecessary - /media/xxx directories. + media/xxx directories. alsa-state: Provide an empty diff --git a/documentation/ref-manual/ref-bitbake.xml b/documentation/ref-manual/ref-bitbake.xml index b587d46caa6..e24ea45281e 100644 --- a/documentation/ref-manual/ref-bitbake.xml +++ b/documentation/ref-manual/ref-bitbake.xml @@ -222,7 +222,7 @@ As each task completes, a timestamp is written to the directory specified by the STAMP variable. - On subsequent runs, BitBake looks within the /build/tmp/stamps + On subsequent runs, BitBake looks within the build/tmp/stamps directory and does not rerun tasks that are already completed unless a timestamp is found to be invalid. Currently, invalid timestamps are only considered on a per diff --git a/documentation/ref-manual/ref-classes.xml b/documentation/ref-manual/ref-classes.xml index 27edfde33df..ca96b3b277c 100644 --- a/documentation/ref-manual/ref-classes.xml +++ b/documentation/ref-manual/ref-classes.xml @@ -6,60 +6,98 @@ Classes - Class files are used to abstract common functionality and share it amongst multiple - .bb files. + Class files are used to abstract common functionality and share it amongst + multiple recipe (.bb) files. + To use a class file, you simply make sure the recipe inherits the class. + In most cases, when a recipe inherits a class it is enough to enable its + features. + There are cases, however, where in the recipe you might need to set + variables or override some default behavior. + + + Any Metadata usually - found in a .bb file can also be placed in a class - file. - Class files are identified by the extension .bbclass and are usually placed - in a classes/ directory beneath the - meta*/ directory found in the + found in a recipe can also be placed in a class file. + Class files are identified by the extension .bbclass + and are usually placed in a classes/ directory beneath + the meta*/ directory found in the Source Directory. Class files can also be pointed to by BUILDDIR (e.g. build/) in the same way as .conf files in the conf directory. - Class files are searched for in BBPATH - using the same method by which .conf files are searched. - - - - In most cases inheriting the class is enough to enable its features, although - for some classes you might need to set variables or override some of the - default behavior. + Class files are searched for in + BBPATH + using the same method by which .conf files are + searched. This chapter discusses only the most useful and important classes. - Other classes do exist within the meta/classes - directory in the - Source Directory. - You can reference the .bbclass files directly - for more information. + Other classes do exist within the meta/classes + directory in the + Source Directory. + You can reference the .bbclass files directly + for more information. -
- The base Class - <filename>base.bbclass</filename> +
+ <filename>allarch.bbclass</filename> - The base class is special in that every .bb - file inherits it automatically. - This class contains definitions for standard basic - tasks such as fetching, unpacking, configuring (empty by default), compiling - (runs any Makefile present), installing (empty by default) and packaging - (empty by default). - These classes are often overridden or extended by other classes - such as autotools.bbclass or package.bbclass. - The class also contains some commonly used functions such as oe_runmake. + The allarch class is inherited + by recipes that do not produce architecture-specific output. + The class disables functionality that is normally needed for recipes + that produce executable binaries (such as building the cross-compiler + and a C library as pre-requisites, and splitting out of debug symbols + during packaging). + + + + By default, all recipes inherit the + base and + package + classes, which enable functionality + needed for recipes that produce executable output. + If your recipe, for example, only produces packages that contain + configuration files, media files, or scripts (e.g. Python and Perl), + then it should inherit the allarch class. + +
+ +
+ <filename>archive*.bbclass</filename> + + + The archive* set of classes support releasing + source code and other materials with the binaries. + This set of classes consists of the following: + + archive-original-sources.bbclass + archive-patched-sources.bbclass + archive-configured-sources.bbclass + archiver.bbclass + + + + + For more details on the source archiver, see the + "Maintaining Open Source License Compliance During Your Product's Lifecycle" + section in the Yocto Project Development Manual.
- Autotooled Packages - <filename>autotools.bbclass</filename> + <filename>autotools.bbclass</filename> - Autotools (autoconf, automake, - and libtool) bring standardization. + The autotools class supports Autotooled + packages. + + + + The autoconf, automake, + and libtool bring standardization. This class defines a set of tasks (configure, compile etc.) that work for all Autotooled packages. It should usually be enough to define a few standard variables @@ -94,65 +132,48 @@
-
- Alternatives - <filename>update-alternatives.bbclass</filename> - - - This class helps the alternatives system when multiple sources provide - the same command. - This situation occurs when several programs that have the same or - similar function are installed with the same name. - For example, the ar command is available from the - busybox, binutils and - elfutils packages. - The update-alternatives.bbclass class handles - renaming the binaries so that multiple packages can be installed - without conflicts. - The ar command still works regardless of which - packages are installed or subsequently removed. - The class renames the conflicting binary in each package and symlinks - the highest priority binary during installation or removal of packages. - +
+ <filename>base.bbclass</filename> - To use this class, you need to define a number of variables: - - ALTERNATIVE - - ALTERNATIVE_LINK_NAME - - ALTERNATIVE_TARGET - - ALTERNATIVE_PRIORITY - - - These variables list alternative commands needed by a package, - provide pathnames for links, default links for targets, and - so forth. - For details on how to use this class, see the comments in the - update-alternatives.bbclass. + The base class is special in that every + .bb file implicitly inherits the class. + This class contains definitions for standard basic + tasks such as fetching, unpacking, configuring (empty by default), + compiling (runs any Makefile present), installing + (empty by default) and packaging (empty by default). + These classes are often overridden or extended by other classes + such as the + autotools + class or the + package + class. + The class also contains some commonly used functions such as + oe_runmake. - - - You can use the update-alternatives command - directly in your recipes. - However, this class simplifies things in most cases. -
-
- Initscripts - <filename>update-rc.d.bbclass</filename> +
+ <filename>bin_package.bbclass</filename> - This class uses update-rc.d to safely install an - initialization script on behalf of the package. - The OpenEmbedded build system takes care of details such as making sure the script is stopped before - a package is removed and started when the package is installed. - Three variables control this class: - INITSCRIPT_PACKAGES, - INITSCRIPT_NAME and - INITSCRIPT_PARAMS. - See the variable links for details. + The bin_package class is a + helper class for recipes that extract the contents of a binary package + (e.g. an RPM) and install those contents rather than building the + binary from source. + The binary package is extracted and new packages in the configured + output package format are created. + + For RPMs and other packages that do not contain a subdirectory, + you should specify a "subdir" parameter. + Here is an example where ${BP} is used so that + the files are extracted into the subdirectory expected by the + default value of + S: + + SRC_URI = "http://example.com/downloads/somepackage.rpm;subdir=${BP}" + +
@@ -160,7 +181,8 @@ <filename>binconfig.bbclass</filename> - This class helps to correct paths in shell scripts. + The binconfig class helps to correct paths in + shell scripts. @@ -184,470 +206,1140 @@
-
- Debian Renaming - <filename>debian.bbclass</filename> +
+ <filename>blacklist.bbclass</filename> - This class renames packages so that they follow the Debian naming - policy (i.e. eglibc becomes libc6 - and eglibc-devel becomes libc6-dev.) + The blacklist class prevents + the OpenEmbedded build system from building specific recipes + (blacklists them). + To use this class, inherit the class globally and set + PNBLACKLIST + for each recipe you wish to blacklist. + Specify the PN + value as a variable flag (varflag) and provide a reason, which is + reported, if the package is requested to be built as the value. + For example, if you want to blacklist a recipe called "exoticware", + you add the following to your local.conf + or distribution configuration: + + INHERIT += "blacklist" + PNBLACKLIST[exoticware] = "Not supported by our organization." +
-
- Pkg-config - <filename>pkgconfig.bbclass</filename> +
+ <filename>boot-directdisk.bbclass</filename> - pkg-config provides a standard way to get - header and library information. - This class aims to smooth integration of - pkg-config into libraries that use it. + The boot-directdisk class + creates an image that can be placed directly onto a hard disk using + dd and then booted. + The image uses SYSLINUX. - During staging, BitBake installs pkg-config data into the - sysroots/ directory. - By making use of sysroot functionality within pkg-config, - this class no longer has to manipulate the files. + The end result is a 512 boot sector populated with a + Master Boot Record (MBR) and partition table followed by an MSDOS + FAT16 partition containing SYSLINUX and a Linux kernel completed by + the ext2 and ext3 + root filesystems.
-
- Archiving Sources - <filename>archive*.bbclass</filename> +
+ <filename>bootimg.bbclass</filename> - Many software licenses require that source code and other materials be - released with the binaries. - To help with that task, the following classes are provided: + The bootimg class creates a bootable + image using SYSLINUX, your kernel and an optional initial RAM disk + (initrd). + + + + When you use this class, two things happen: - archive-original-sources.bbclass - archive-patched-sources.bbclass - archive-configured-sources.bbclass - archiver.bbclass + + A .hddimg file is created. + This file which is an MSDOS filesystem that contains SYSLINUX, + a kernel, an initrd, and a root filesystem + image. + All three of these can be written to hard drives directly and + also booted on a USB flash disks using dd. + + + A CD .iso image is created. + When this file is booted, the initrd + boots and processes the label selected in SYSLINUX. + Actions based on the label are then performed (e.g. installing + to a hard drive). - For more details on the source archiver, see the - "Maintaining Open Source License Compliance During Your Product's Lifecycle" - section in the Yocto Project Development Manual. + The bootimg class supports the + INITRD, + NOISO, + NOHDD, and + ROOTFS + variables.
-
- Perl Modules - <filename>cpan.bbclass</filename> +
+ <filename>bugzilla.bbclass</filename> - Recipes for Perl modules are simple. - These recipes usually only need to point to the source's archive and then inherit the - proper .bbclass file. - Building is split into two methods depending on which method the module authors used. - - Modules that use old - Makefile.PL-based build system require - cpan.bbclass in their recipes. - - Modules that use - Build.PL-based build system require - using cpan_build.bbclass in their recipes. - - + The bugzilla class supports setting up an + instance of Bugzilla in which you can automatically files bug reports + in response to build failures. + For this class to work, you need to enable the XML-RPC interface in + the instance of Bugzilla.
-
- Python Extensions - <filename>distutils.bbclass</filename> +
+ <filename>buildhistory.bbclass</filename> - Recipes for Python extensions are simple. - These recipes usually only need to point to the source's archive and then inherit - the proper .bbclass file. - Building is split into two methods depending on which method the module authors used. - - Extensions that use an Autotools-based build system - require Autotools and - distutils-based - .bbclasse files in their recipes. - - Extensions that use - distutils-based build systems require - distutils.bbclass in their recipes. - - + The buildhistory class records a + history of build output metadata, which can be used to detect possible + regressions as well as used for analysis of the build output. + For more information on using Build History, see the + "Maintaining Build Output Quality" + section.
-
- Developer Shell - <filename>devshell.bbclass</filename> +
+ <filename>buildstats.bbclass</filename> - This class adds the devshell task. - Distribution policy dictates whether to include this class. - See the - "Using a Development Shell" section - in the Yocto Project Development Manual for more information about using devshell. + The buildstats class records + performance statistics about each task executed during the build + (e.g. elapsed time, CPU usage, and I/O usage). + + + + When you use this class, the output goes into the + BUILDSTATS_BASE + directory, which defaults to ${TMPDIR}/buildstats/. + You can analyze the elapsed time using + scripts/pybootchartgui/pybootchartgui.py, which + produces a cascading chart of the entire build process and can be + useful for highlighting bottlenecks. + + + + Collecting build statistics is enabled by default through the + USER_CLASSES + variable from your local.conf file. + Consequently, you do not have to do anything to enable the class. + However, if you want to disable the class, simply remove "buildstats" + from the USER_CLASSES list.
-
- Package Groups - <filename>packagegroup.bbclass</filename> +
+ <filename>ccache.bbclass</filename> - This class sets default values appropriate for package group recipes (e.g. - PACKAGES, - PACKAGE_ARCH, - ALLOW_EMPTY, - and so forth). - It is highly recommended that all package group recipes inherit this class. + The ccache class enables the + C/C++ Compiler Cache + for the build. + This class is used to give a minor performance boost during the build. + However, using the class can lead to unexpected side-effects. + Thus, it is recommended that you do not use this class. + See for information on + the C/C++ Compiler Cache. +
+ +
+ <filename>chrpath.bbclass</filename> + - For information on how to use this class, see the - "Customizing Images Using Custom Package Groups" - section in the Yocto Project Development Manual. + The chrpath class + is a wrapper around the "chrpath" utility, which is used during the + build process for nativesdk, + cross, and + cross-canadian recipes to change + RPATH records within binaries in order to make + them relocatable. +
+ +
+ <filename>clutter.bbclass</filename> + - Previously, this class was named task.bbclass. + The clutter class consolidates the + major and minor version naming and other common items used by Clutter + and related recipes. + + Unlike some other classes related to specific libraries, recipes + building other software that uses Clutter do not need to + inherit this class unless they use the same recipe versioning + scheme that the Clutter and related recipes do. +
+
+ <filename>cmake.bbclass</filename> -
- Packaging - <filename>package*.bbclass</filename> + + The cmake class allows for + recipes that need to build software using the CMake build system. + You can use the + EXTRA_OECMAKE + variable to specify additional configuration options to be passed on + the cmake command line. + +
+ +
+ <filename>cml1.bbclass</filename> - The packaging classes add support for generating packages from a build's - output. - The core generic functionality is in package.bbclass. - The code specific to particular package types is contained in various sub-classes such as - package_deb.bbclass, package_ipk.bbclass, - and package_rpm.bbclass. - Most users will want one or more of these classes. + The cml1 class provides basic support for the + Linux kernel style build configuration system. +
+ +
+ <filename>copyleft_compliance.bbclass</filename> - You can control the list of resulting package formats by using the - PACKAGE_CLASSES - variable defined in the local.conf configuration file, - which is located in the conf folder of the - Source Directory. - When defining the variable, you can specify one or more package types. - Since images are generated from packages, a packaging class is - needed to enable image generation. - The first class listed in this variable is used for image generation. + The copyleft_compliance class + preserves source code for the purposes of license compliance. + This class is an alternative to the archive* + classes and is still used by some users even though it has been + deprecated in favor of the + archive* + classes. +
+ +
+ <filename>core-image.bbclass</filename> - If you take the optional step to set up a repository (package feed) - on the development host that can be used by Smart, you can - install packages from the feed while you are running the image - on the target (i.e. runtime installation of packages). - For more information, see the - "Using Runtime Package Management" - section in the Yocto Project Development Manual. + The core-image class + provides common definitions for the + core-image-* image recipes, such as support for + additional + IMAGE_FEATURES. +
+ +
+ <filename>cpan.bbclass</filename> - The package class you choose can affect build-time performance and has space - ramifications. - In general, building a package with IPK takes about thirty percent less - time as compared to using RPM to build the same or similar package. - This comparison takes into account a complete build of the package with - all dependencies previously built. - The reason for this discrepancy is because the RPM package manager - creates and processes more - Metadata than the - IPK package manager. - Consequently, you might consider setting PACKAGE_CLASSES - to "package_ipk" if you are building smaller systems. + The cpan class supports Perl modules. - Before making your decision on package manager, however, you should - consider some further things about using RPM: + Recipes for Perl modules are simple. + These recipes usually only need to point to the source's archive and + then inherit the proper class file. + Building is split into two methods depending on which method the module + authors used. - - RPM starts to provide more abilities than IPK due to - the fact that it processes more metadata. - For example, this information includes individual file types, - file checksum generation and evaluation on install, sparse file - support, conflict detection and resolution for Multilib systems, - ACID style upgrade, and repackaging abilities for rollbacks. + Modules that use old + Makefile.PL-based build system require + cpan.bbclass in their recipes. - - For smaller systems, the extra space used for the Berkley - Database and the amount of metadata when using RPM can affect - your ability to perform on-device upgrades. + Modules that use + Build.PL-based build system require + using cpan_build.bbclass in their recipes. +
+ +
+ <filename>cross.bbclass</filename> - You can find additional information on the effects of the package - class at these two Yocto Project mailing list links: - - - https://lists.yoctoproject.org/pipermail/poky/2011-May/006362.html - - https://lists.yoctoproject.org/pipermail/poky/2011-May/006363.html - + The cross class provides support for the recipes + that build the cross-compilation tools.
-
- Building Kernels - <filename>kernel.bbclass</filename> +
+ <filename>cross-canadian.bbclass</filename> - This class handles building Linux kernels. - The class contains code to build all kernel trees. - All needed headers are staged into the - STAGING_KERNEL_DIR - directory to allow out-of-tree module builds using module.bbclass. + The cross-canadian class + provides support for the recipes that build the Canadian + Cross-compilation tools for SDKs. + See the + "Cross-Development Toolchain Generation" + section for more discussion on these cross-compilation tools. +
- - This means that each built kernel module is packaged separately and inter-module - dependencies are created by parsing the modinfo output. - If all modules are required, then installing the kernel-modules - package installs all packages with modules and various other kernel packages - such as kernel-vmlinux. - +
+ <filename>crosssdk.bbclass</filename> - Various other classes are used by the kernel and module classes internally including - kernel-arch.bbclass, module_strip.bbclass, - module-base.bbclass, and linux-kernel-base.bbclass. + The crosssdk class + provides support for the recipes that build the cross-compilation + tools used for building SDKs. + See the + "Cross-Development Toolchain Generation" + section for more discussion on these cross-compilation tools.
-
- Creating Images - <filename>image.bbclass</filename> and <filename>rootfs*.bbclass</filename> +
+ <filename>debian.bbclass</filename> - These classes add support for creating images in several formats. - First, the root filesystem is created from packages using - one of the rootfs_*.bbclass - files (depending on the package format used) and then the image is created. - - The - IMAGE_FSTYPES - variable controls the types of images to generate. - - The - IMAGE_INSTALL - variable controls the list of packages to install into the - image. - + The debian class renames output packages so that + they follow the Debian naming policy (i.e. eglibc + becomes libc6 and eglibc-devel + becomes libc6-dev.) + Renaming includes the library name and version as part of the package + name. + + + + If a recipe creates packages for multiple libraries + (shared object files of .so type), use the + LEAD_SONAME + variable in the recipe to specify the library on which to apply the + naming scheme.
-
- Host System Sanity Checks - <filename>sanity.bbclass</filename> +
+ <filename>deploy.bbclass</filename> - This class checks to see if prerequisite software is present on the host system - so that users can be notified of potential problems that might affect their build. - The class also performs basic user configuration checks from - the local.conf configuration file to - prevent common mistakes that cause build failures. - Distribution policy usually determines whether to include this class. + The deploy class handles deploying files + to the + DEPLOY_DIR_IMAGE + directory. + The main function of this class is to allow the deploy step to be + accelerated by shared state. + Recipes that inherit this class should define their own + do_deploy function to copy the files to be + deployed to + DEPLOYDIR, + and use addtask to add the task at the appropriate + place, which is usually after do_compile or + do_install. + The class then takes care of staging the files from + DEPLOYDIR to + DEPLOY_DIR_IMAGE.
-
-<filename>insane.bbclass</filename> +
+ <filename>devshell.bbclass</filename> - This class adds a step to the package generation process so that - output quality assurance checks are generated by the OpenEmbedded - build system. - A range of checks are performed that check the build's output - for common problems that show up during runtime. - Distribution policy usually dictates whether to include this class. + The devshell class adds the + devshell task. + Distribution policy dictates whether to include this class. + See the + "Using a Development Shell" section + in the Yocto Project Development Manual for more information about + using devshell. +
+ +
+ <filename>distro_features_check.bbclass</filename> - You can configure the sanity checks so that specific test failures - either raise a warning or an error message. - Typically, failures for new tests generate a warning. - Subsequent failures for the same test would then generate an error - message once the metadata is in a known and good condition. + The distro_features_check class + allows individual recipes to check for required and conflicting + DISTRO_FEATURES. - Use the - WARN_QA and - ERROR_QA - variables to control the behavior of - these checks at the global level (i.e. in your custom distro - configuration). - However, to skip one or more checks in recipes, you should use - INSANE_SKIP. - For example, to skip the check for symbolic link - .so files in the main package of a recipe, - add the following to the recipe. - You need to realize that the package name override, in this example - ${PN}, must be used: + This class provides support for the + REQUIRED_DISTRO_FEATURES + and + CONFLICT_DISTRO_FEATURES + variables. + If any conditions specified in the recipe using the above variables are + not met, the recipe will be skipped. + +
+ +
+ <filename>distrodata.bbclass</filename> + + + The distrodata class + provides for automatic checking for upstream recipe updates. + The class creates a comma-separated value (CSV) spreadsheet that + contains information about the recipes. + The information provides the distrodata and + distro_check tasks, which do upstream checking + and also verify if a package is used in multiple major distributions. + + + + The class is not included by default. + To use it, you must include the following files and set the + INHERIT + variable: - INSANE_SKIP_${PN} += "dev-so" + include conf/distro/include/distro_alias.inc + include conf/distro/include/recipe_color.inc + include conf/distro/include/maintainers.inc + include conf/distro/include/upstream_tracking.inc + include conf/distro/include/package_regex.inc + INHERIT+= "distrodata" - Please keep in mind that the QA checks exist in order to detect real - or potential problems in the packaged output. - So exercise caution when disabling these checks. +
+ +
+ <filename>distutils.bbclass</filename> - The following list shows the tests you can list with the - WARN_QA and ERROR_QA - variables: + The distutils class supports recipes for Python + extensions, which are simple. + These recipes usually only need to point to the source's archive and + then inherit the proper class. + Building is split into two methods depending on which method the + module authors used. - ldflags: - Ensures that the binaries were linked with the - LDFLAGS options provided by the build system. - If this test fails, check that the LDFLAGS variable - is being passed to the linker command. - useless-rpaths: - Checks for dynamic library load paths (rpaths) in the binaries that - by default on a standard system are searched by the linker (e.g. - /lib and /usr/lib). - While these paths will not cause any breakage, they do waste space and - are unnecessary. - rpaths: - Checks for rpaths in the binaries that contain build system paths such - as TMPDIR. - If this test fails, bad -rpath options are being - passed to the linker commands and your binaries have potential security - issues. - dev-so: - Checks that the .so symbolic links are in the - -dev package and not in any of the other packages. - In general, these symlinks are only useful for development purposes. - Thus, the -dev package is the correct location for - them. - Some very rare cases do exist for dynamically loaded modules where - these symlinks are needed instead in the main package. + Extensions that use an Autotools-based build system + require Autotools and + distutils-based classes in their recipes. - debug-files: - Checks for .debug directories in anything but the - -dbg package. - The debug files should all be in the -dbg package. - Thus, anything packaged elsewhere is incorrect packaging. - arch: - Checks the Executable and Linkable Format (ELF) type, bit size, and endianness - of any binaries to ensure they match the target architecture. - This test fails if any binaries don't match the type since there would be an - incompatibility. - Sometimes software, like bootloaders, might need to bypass this check. + Extensions that use + distutils-based build systems require + the distutils class in their recipes. - debug-deps: - Checks that -dbg packages only depend on other - -dbg packages and not on any other types of packages, - which would cause a packaging bug. - dev-deps: - Checks that -dev packages only depend on other - -dev packages and not on any other types of packages, - which would be a packaging bug. - pkgconfig: - Checks .pc files for any - TMPDIR/WORKDIR - paths. - Any .pc file containing these paths is incorrect - since pkg-config itself adds the correct sysroot prefix - when the files are accessed. - textrel: - Checks for ELF binaries that contain relocations in their - .text sections, which can result in a - performance impact at runtime. - pkgvarcheck: - Checks through the variables - RDEPENDS, - RRECOMMENDS, - RSUGGESTS, - RCONFLICTS, - RPROVIDES, - RREPLACES, - FILES, - ALLOW_EMPTY, - pkg_preinst, - pkg_postinst, - pkg_prerm - and pkg_postrm, and reports if there are - variable sets that are not package-specific. - Using these variables without a package suffix is bad practice, - and might unnecessarily complicate dependencies of other packages - within the same recipe or have other unintended consequences. + Extensions that use the setuptools-based build + systems require the + setuptools + class in their recipes. - xorg-driver-abi: - Checks that all packages containing Xorg drivers have ABI - dependencies. - The xserver-xorg recipe provides driver - ABI names. - All drivers should depend on the ABI versions that they have - been built against. - Driver recipes that include - xorg-driver-input.inc - or xorg-driver-video.inc will - automatically get these versions. - Consequently, you should only need to explicitly add - dependencies to binary driver recipes. + + +
+ +
+ <filename>externalsrc.bbclass</filename> + + + The externalsrc class supports building software + from source code that is external to the OpenEmbedded build system. + Building software from an external source tree means that the build + system's normal fetch, unpack, and patch process is not used. + + + + By default, the OpenEmbedded build system uses the + S and + B variables to + locate unpacked recipe source code and to build it, respectively. + When your recipe inherits the externalsrc class, + you use the + EXTERNALSRC + and + EXTERNALSRC_BUILD + variables to ultimately define S and + B. + + + + By default, this class expects the source code to support recipe builds + that use the B + variable to point to the directory in which the OpenEmbedded build + system places the generated objects built from the recipes. + By default, the B directory is set to the + following, which is separate from the source directory + (S): + + ${WORKDIR}/${BPN}/{PV}/ + + See these variables for more information: + WORKDIR, + BPN, and + PV, + + + + For more information on the + externalsrc class, see the comments in + meta/classes/externalsrc.bbclass in the + Source Directory. + For information on how to use the externalsrc + class, see the + "Building Software from an External Source" + section in the Yocto Project Development Manual. + +
+ +
+ <filename>extrausers.bbclass</filename> + + + The extrausers class allows + additional user and group configuration to be applied at the image + level. + Inheriting this class either globally or from an image recipe allows + additional user and group operations to be performed using the + EXTRA_USERS_PARAMS + variable. + + The user and group operations added using the + extrausers class are not tied to a specific + recipe outside of the recipe for the image. + Thus, the operations can be performed across the image as a whole. + Use the + useradd + class to add user and group configuration to a specific recipe. + + + + + Here is an example that uses this class in an image recipe: + + inherit extrausers + EXTRA_USERS_PARAMS = "\ + useradd -p '' tester; \ + groupadd developers; \ + userdel nobody; \ + groupdel -g video; \ + groupmod -g 1020 developers; \ + usermod -s /bin/sh tester; \ + " + + +
+ +
+ <filename>fontcache.bbclass</filename> + + + The fontcache class generates the + proper post-install and post-remove (postinst and postrm) + scriptlets for font packages. + These scriptlets call fc-cache (part of + Fontconfig) to add the fonts to the font + information cache. + Since the cache files are architecture-specific, + fc-cache runs using QEMU if the postinst + scriptlets need to be run on the build host during image creation. + + + + If the fonts being installed are in packages other than the main + package, set + FONT_PACKAGES + to specify the packages containing the fonts. + +
+ +
+ <filename>gconf.bbclass</filename> + + + The gconf class provides common + functionality for recipes that need to install GConf schemas. + The schemas will be put into a separate package + (${PN}-gconf) + that is created automatically when this class is inherited. + This package uses the appropriate post-install and post-remove + (postinst/postrm) scriptlets to register and unregister the schemas + in the target image. + +
+ +
+ <filename>gettext.bbclass</filename> + + + The gettext class provides support for + building software that uses the GNU gettext + internationalization and localization system. + All recipes building software that use + gettext should inherit this class. + +
+ +
+ <filename>gnome.bbclass</filename> + + + The gnome class supports recipes that + build software from the GNOME stack. + This class inherits the + gnomebase, + gtk-icon-cache, + gconf and + mime classes. + The class also disables GObject introspection where applicable. + +
+ +
+ <filename>gnomebase.bbclass</filename> + + + The gnomebase class is the base + class for recipes that build software from the GNOME stack. + This class sets + SRC_URI to + download the source from the GNOME mirrors as well as extending + FILES + with the typical GNOME installation paths. + +
+ +
+ <filename>grub-efi.bbclass</filename> + + + The grub-efi + class provides grub-efi-specific functions for + building bootable images. + + + + This class supports several variables: + + + INITRD: + Indicates a filesystem image to use as an initrd (optional). - libexec: - Checks if a package contains files in - /usr/libexec. - This check is not performed if the - libexecdir variable has been set - explicitly to /usr/libexec. + + ROOTFS: + Indicates a filesystem image to include as the root filesystem + (optional). + + GRUB_GFXSERIAL: + Set this to "1" to have graphics and serial in the boot menu. - staticdev: - Checks for static library files (*.a) in - non-staticdev packages. + + LABELS: + A list of targets for the automatic configuration. - la: - Checks .la files for any TMPDIR - paths. - Any .la file containing these paths is incorrect since - libtool adds the correct sysroot prefix when using the - files automatically itself. - desktop: - Runs the desktop-file-validate program - against any .desktop files to validate - their contents against the specification for - .desktop files. - already-stripped: - Checks that produced binaries have not already been - stripped prior to the build system extracting debug symbols. - It is common for upstream software projects to default to - stripping debug symbols for output binaries. - In order for debugging to work on the target using - -dbg packages, this stripping must be - disabled. + + APPEND: + An override list of append strings for each + LABEL. - split-strip: - Reports that splitting or stripping debug symbols from binaries - has failed. + + GRUB_OPTS: + Additional options to add to the configuration (optional). + Options are delimited using semi-colon characters + (;). + + GRUB_TIMEOUT: + Timeout before executing the default LABEL + (optional). - arch: - Checks to ensure the architecture, bit size, and endianness - of all output binaries matches that of the target. - This test can detect when the wrong compiler or compiler options - have been used. + + +
+ +
+ <filename>gsettings.bbclass</filename> + + + The gsettings class + provides common functionality for recipes that need to install + GSettings (glib) schemas. + The schemas are assumed to be part of the main package. + Appropriate post-install and post-remove (postinst/postrm) + scriptlets are added to register and unregister the schemas in the + target image. + +
+ +
+ <filename>gtk-doc.bbclass</filename> + + + The gtk-doc class + is a helper class to pull in the appropriate + gtk-doc dependencies and disable + gtk-doc. + +
+ +
+ <filename>gtk-icon-cache.bbclass</filename> + + + The gtk-icon-cache class + generates the proper post-install and post-remove (postinst/postrm) + scriptlets for packages that use GTK+ and install icons. + These scriptlets call gtk-update-icon-cache to add + the fonts to GTK+'s icon cache. + Since the cache files are architecture-specific, + gtk-update-icon-cache is run using QEMU if the + postinst scriptlets need to be run on the build host during image + creation. + +
+ +
+ <filename>gtk-immodules-cache.bbclass</filename> + + + The gtk-immodules-cache class + generates the proper post-install and post-remove (postinst/postrm) + scriptlets for packages that install GTK+ input method modules for + virtual keyboards. + These scriptlets call gtk-update-icon-cache to add + the input method modules to the cache. + Since the cache files are architecture-specific, + gtk-update-icon-cache is run using QEMU if the + postinst scriptlets need to be run on the build host during image + creation. + + + + If the input method modules being installed are in packages other than + the main package, set + GTKIMMODULES_PACKAGES + to specify the packages containing the modules. + +
+ +
+ <filename>gzipnative.bbclass</filename> + + + The gzipnative + class enables the use of native versions of gzip + and pigz rather than the versions of these tools + from the build host. + +
+ +
+ <filename>icecc.bbclass</filename> + + + The icecc class supports + Icecream, which + facilitates taking compile jobs and distributing them among remote + machines. + + + + The class stages directories with symlinks from gcc + and g++ to icecc, for both + native and cross compilers. + Depending on each configure or compile, the OpenEmbedded build system + adds the directories at the head of the PATH list + and then sets the ICECC_CXX and + ICEC_CC variables, which are the paths to the + g++ and gcc compilers, + respectively. + + + + For the cross compiler, the class creates a tar.gz + file that contains the Yocto Project toolchain and sets + ICECC_VERSION, which is the version of the + cross-compiler used in the cross-development toolchain, accordingly. + + + + The class handles all three different compile stages + (i.e native ,cross-kernel and target) and creates the necessary + environment tar.gz file to be used by the remote + machines. + The class also supports SDK generation. + + + + If ICECC_PATH + is not set in your local.conf file, then the + class tries to locate the icecc binary + using which. + + If + ICECC_ENV_EXEC + is set in your local.conf file, the variable should + point to the icecc-create-env script + provided by the user. + If you do not point to a user-provided script, the build system + uses the default script provided by the recipe + icecc-create-env-native.bb. + + This script is a modified version and not the one that comes with + icecc. + + + + + If you do not want the Icecream distributed compile support to apply + to specific recipes or classes, you can effectively "blacklist" them + by listing the recipes and classes using the + ICECC_USER_PACKAGE_BL + and + ICECC_USER_CLASS_BL, + variables, respectively, in your local.conf file. + Doing so causes the OpenEmbedded build system to handle these + compilations locally. + + + + Additionally, you can list recipes using the + ICECC_USER_PACKAGE_WL + variable in your local.conf file to force + icecc to be enabled for recipes using an empty + PARALLEL_MAKE + variable. + +
+ +
+ <filename>image.bbclass</filename> + + + The image class helps support creating images + in different formats. + First, the root filesystem is created from packages using + one of the rootfs*.bbclass + files (depending on the package format used) and then one or more image + files are created. + + The + IMAGE_FSTYPES + variable controls the types of images to generate. - installed-vs-shipped: - Reports when files have been installed within - do_install but have not been included in - any package by way of the - FILES - variable. - Files that do not appear in any package cannot be present in - an image later on in the build process. - Ideally, all installed files should be packaged or not - installed at all. - These files can be deleted at the end of - do_install if the files are not - needed in any package. + The + IMAGE_INSTALL + variable controls the list of packages to install into the + image. + + For information on customizing images, see the + "Customizing Images" + section in the Yocto Project Development Manual. + For information on how images are created, see the + "Images" section elsewhere + in this manual. + +
+ +
+ <filename>image_types.bbclass</filename> + + + The image_types class defines all of + the standard image output types that you can enable through the + IMAGE_FSTYPES + variable. + You can use this class as a reference on how to add support for custom + image output types. + + + + By default, this class is enabled through the + IMAGE_CLASSES + variable in + image.bbclass. + If you define your own image types using a custom BitBake class and + then use IMAGE_CLASSES to enable it, the custom + class must either inherit image_types or + image_types must also appear in + IMAGE_CLASSES. + +
+ +
+ <filename>image_types_uboot.bbclass</filename> + + + The image_types_uboot class + defines additional image types specifically for the U-Boot bootloader. + +
+ +
+ <filename>image-live.bbclass</filename> + + + The image-live class supports building "live" + images. + Normally, you do not use this class directly. + Instead, you add "live" to + IMAGE_FSTYPES. + +
+ +
+ <filename>image-mklibs.bbclass</filename> + + + The image-mklibs class + enables the use of the mklibs utility during the + do_rootfs task, which optimizes the size of + libraries contained in the image. + + + + By default, the class is enabled in the + local.conf.template using the + USER_CLASSES + variable as follows: + + USER_CLASSES ?= "buildstats image-mklibs image-prelink" + + +
+ + + +
+ <filename>image-swab.bbclass</filename> + + + The image-swab class enables the + Swabber + tool in order to detect and log accesses to the host system during + the OpenEmbedded build process. + + This class is currently unmaintained. + + +
+ +
+ <filename>image-vmdk.bbclass</filename> + + + The image-vmdk class supports building VMware + VMDK images. + Normally, you do not use this class directly. + Instead, you add "vmdk" to + IMAGE_FSTYPES. + +
+ +
+ <filename>insane.bbclass</filename> + + + The insane class adds a step to the package + generation process so that output quality assurance checks are + generated by the OpenEmbedded build system. + A range of checks are performed that check the build's output + for common problems that show up during runtime. + Distribution policy usually dictates whether to include this class. + + + + You can configure the sanity checks so that specific test failures + either raise a warning or an error message. + Typically, failures for new tests generate a warning. + Subsequent failures for the same test would then generate an error + message once the metadata is in a known and good condition. + + + + Use the + WARN_QA and + ERROR_QA + variables to control the behavior of + these checks at the global level (i.e. in your custom distro + configuration). + However, to skip one or more checks in recipes, you should use + INSANE_SKIP. + For example, to skip the check for symbolic link + .so files in the main package of a recipe, + add the following to the recipe. + You need to realize that the package name override, in this example + ${PN}, must be used: + + INSANE_SKIP_${PN} += "dev-so" + + Please keep in mind that the QA checks exist in order to detect real + or potential problems in the packaged output. + So exercise caution when disabling these checks. + + + + The following list shows the tests you can list with the + WARN_QA and ERROR_QA + variables: + + ldflags: + Ensures that the binaries were linked with the + LDFLAGS options provided by the build system. + If this test fails, check that the LDFLAGS variable + is being passed to the linker command. + useless-rpaths: + Checks for dynamic library load paths (rpaths) in the binaries that + by default on a standard system are searched by the linker (e.g. + /lib and /usr/lib). + While these paths will not cause any breakage, they do waste space and + are unnecessary. + rpaths: + Checks for rpaths in the binaries that contain build system paths such + as TMPDIR. + If this test fails, bad -rpath options are being + passed to the linker commands and your binaries have potential security + issues. + dev-so: + Checks that the .so symbolic links are in the + -dev package and not in any of the other packages. + In general, these symlinks are only useful for development purposes. + Thus, the -dev package is the correct location for + them. + Some very rare cases do exist for dynamically loaded modules where + these symlinks are needed instead in the main package. - dep-cmp: - Checks for invalid version comparison statements in runtime - dependency relationships between packages (i.e. in + debug-files: + Checks for .debug directories in anything but the + -dbg package. + The debug files should all be in the -dbg package. + Thus, anything packaged elsewhere is incorrect packaging. + arch: + Checks the Executable and Linkable Format (ELF) type, bit size, and endianness + of any binaries to ensure they match the target architecture. + This test fails if any binaries don't match the type since there would be an + incompatibility. + Sometimes software, like bootloaders, might need to bypass this check. + + debug-deps: + Checks that -dbg packages only depend on other + -dbg packages and not on any other types of packages, + which would cause a packaging bug. + dev-deps: + Checks that -dev packages only depend on other + -dev packages and not on any other types of packages, + which would be a packaging bug. + pkgconfig: + Checks .pc files for any + TMPDIR/WORKDIR + paths. + Any .pc file containing these paths is incorrect + since pkg-config itself adds the correct sysroot prefix + when the files are accessed. + textrel: + Checks for ELF binaries that contain relocations in their + .text sections, which can result in a + performance impact at runtime. + pkgvarcheck: + Checks through the variables + RDEPENDS, + RRECOMMENDS, + RSUGGESTS, + RCONFLICTS, + RPROVIDES, + RREPLACES, + FILES, + ALLOW_EMPTY, + pkg_preinst, + pkg_postinst, + pkg_prerm + and pkg_postrm, and reports if there are + variable sets that are not package-specific. + Using these variables without a package suffix is bad practice, + and might unnecessarily complicate dependencies of other packages + within the same recipe or have other unintended consequences. + + xorg-driver-abi: + Checks that all packages containing Xorg drivers have ABI + dependencies. + The xserver-xorg recipe provides driver + ABI names. + All drivers should depend on the ABI versions that they have + been built against. + Driver recipes that include + xorg-driver-input.inc + or xorg-driver-video.inc will + automatically get these versions. + Consequently, you should only need to explicitly add + dependencies to binary driver recipes. + + libexec: + Checks if a package contains files in + /usr/libexec. + This check is not performed if the + libexecdir variable has been set + explicitly to /usr/libexec. + + staticdev: + Checks for static library files (*.a) in + non-staticdev packages. + + la: + Checks .la files for any TMPDIR + paths. + Any .la file containing these paths is incorrect since + libtool adds the correct sysroot prefix when using the + files automatically itself. + desktop: + Runs the desktop-file-validate program + against any .desktop files to validate + their contents against the specification for + .desktop files. + already-stripped: + Checks that produced binaries have not already been + stripped prior to the build system extracting debug symbols. + It is common for upstream software projects to default to + stripping debug symbols for output binaries. + In order for debugging to work on the target using + -dbg packages, this stripping must be + disabled. + + split-strip: + Reports that splitting or stripping debug symbols from binaries + has failed. + + arch: + Checks to ensure the architecture, bit size, and endianness + of all output binaries matches that of the target. + This test can detect when the wrong compiler or compiler options + have been used. + + installed-vs-shipped: + Reports when files have been installed within + do_install but have not been included in + any package by way of the + FILES + variable. + Files that do not appear in any package cannot be present in + an image later on in the build process. + Ideally, all installed files should be packaged or not + installed at all. + These files can be deleted at the end of + do_install if the files are not + needed in any package. + + dep-cmp: + Checks for invalid version comparison statements in runtime + dependency relationships between packages (i.e. in RDEPENDS, RRECOMMENDS, RSUGGESTS, @@ -816,53 +1508,1091 @@
-
- Removing Work Files During the Build - <filename>rm_work.bbclass</filename> +
+ <filename>insserv.bbclass</filename> + + + The insserv class + uses the insserv utility to update the order of + symbolic links in /etc/rc?.d/ within an image + based on dependencies specified by LSB headers in the + init.d scripts themselves. + +
+ +
+ <filename>kernel.bbclass</filename> + + + The kernel class handles building Linux kernels. + The class contains code to build all kernel trees. + All needed headers are staged into the + STAGING_KERNEL_DIR + directory to allow out-of-tree module builds using + the + module + class. + + + + This means that each built kernel module is packaged separately and inter-module + dependencies are created by parsing the modinfo output. + If all modules are required, then installing the kernel-modules + package installs all packages with modules and various other kernel packages + such as kernel-vmlinux. + + + + Various other classes are used by the kernel + and module classes internally including the + kernel-arch, + module-base, + and + linux-kernel-base + classes. + +
+ +
+ <filename>kernel-arch.bbclass</filename> + + + The kernel-arch class + sets the ARCH environment variable for Linux + kernel compilation (including modules). + +
+ +
+ <filename>kernel-module-split.bbclass</filename> + + + The kernel-module-split class + provides common functionality for splitting Linux kernel modules into + separate packages. + +
+ +
+ <filename>kernel-yocto.bbclass</filename> + + + The kernel-yocto class + provides common functionality for building from linux-yocto style + kernel source repositories. + +
+ +
+ <filename>lib_package.bbclass</filename> + + + The lib_package class + supports recipes that build libraries and produce executable + binaries, where those binaries should not be installed by default + along with the library. + Instead, the binaries are added to a separate + ${PN}-bin + package to make their installation optional. + +
+ +
+ <filename>license.bbclass</filename> + + + The license class provides license + manifest creation and license exclusion. + This class is enabled by default using the default value for the + INHERIT_DISTRO + variable. + +
+ +
+ <filename>linux-kernel-base.bbclass</filename> + + + The linux-kernel-base class + provides common functionality for recipes that build out of the Linux + kernel source tree. + These builds goes beyond the kernel itself. + For example, the Perf recipe also inherits this class. + +
+ +
+ <filename>logging.bbclass</filename> + + + The logging class provides the standard + shell functions used to log messages for various BitBake severity levels + (i.e. bbplain, bbnote, + bbwarn, bberror, + bbfatal, and bbdebug). + + + + This class is enabled by default since it is inherited by + the base class. + +
+ +
+ <filename>meta.bbclass</filename> + + + The meta class is inherited by recipes + that do not build any output packages themselves, but act as a "meta" + target for building other recipes. + +
+ +
+ <filename>metadata_scm.bbclass</filename> + + + The metadata_scm class provides functionality for + querying the branch and revision of a Source Code Manager (SCM) + repository. + + + + The base + class uses this class to print the revisions of each layer before + starting every build. + The metadata_scm class is enabled by default + because it is inherited by the base class. + +
+ +
+ <filename>mime.bbclass</filename> + + + The mime class generates the proper + post-install and post-remove (postinst/postrm) scriptlets for packages + that install MIME type files. + These scriptlets call update-mime-database to add + the MIME types to the shared database. + +
+ +
+ <filename>mirrors.bbclass</filename> + + + The mirrors class sets up some standard + MIRRORS entries + for source code mirrors. + These mirrors provide a fall-back path in case the upstream source + specified in + SRC_URI + within recipes is unavailable. + + + + This class is enabled by default since it is inherited by the + base class. + +
+ +
+ <filename>module.bbclass</filename> + + + The module class provides support for building + out-of-tree Linux kernel modules. + The class inherits the + module-base + and + kernel-module-split + classes, and implements do_compile and + do_install functions. + The class provides everything needed to build and package a kernel + module. + + + + For general information on out-of-tree Linux kernel modules, see the + "Incorporating Out-of-Tree Modules" + section in the Yocto Project Linux Kernel Development Manual. + +
+ +
+ <filename>module-base.bbclass</filename> + + + The module-base class provides the base + functionality for building Linux kernel modules. + Typically, a recipe that builds software that includes one or + more kernel modules and has its own means of building + the module inherits this class as opposed to inheriting the + module + class. + +
+ +
+ <filename>multilib*.bbclass</filename> + + + The multilib* classes provide support + for building libraries with different target optimizations or target + architectures and installing them side-by-side in the same image. + + + + For more information on using the Multilib feature, see the + "Combining Multiple Versions of Library Files into One Image" + section in the Yocto Project Development Manual. + +
+ +
+ <filename>native.bbclass</filename> + + + The native class provides common + functionality for recipes that wish to build tools to run on the build + host (i.e. tools that use the compiler or other tools from the + build host). + + + + You can create a recipe that builds tools that run natively on the + host a couple different ways: + + Create a myrecipe-native.bb + that inherits the native class. + + Create or modify a target recipe that has adds + the following: + + BBCLASSEXTEND = "native" + + Inside the recipe, use _class-native and + _class-target overrides to specify any + functionality specific to the respective native or target + case. + + + + + Although applied differently, the native class is + used with both methods. + The advantage of the second method is that you do not need to have two + separate recipes (assuming you need both) for native and target. + All common parts of the recipe are automatically shared. + +
+ +
+ <filename>nativesdk.bbclass</filename> + + + The nativesdk class provides common + functionality for recipes that wish to build tools to run as part of + an SDK (i.e. tools that run on + SDKMACHINE). + + + + You can create a recipe that builds tools that run on the SDK machine + a couple different ways: + + Create a myrecipe-nativesdk.bb + recipe that inherits the nativesdk class. + + Create a nativesdk variant + of any recipe by adding the following: + + BBCLASSEXTEND = "nativesdk" + + Inside the recipe, use _class-nativesdk and + _class-target overrides to specify any + functionality specific to the respective SDK machine or target + case. + + + + + Although applied differently, the nativesdk class + is used with both methods. + The advantage of the second method is that you do not need to have two + separate recipes (assuming you need both) for the SDK machine and the + target. + All common parts of the recipe are automatically shared. + +
+ +
+ <filename>oelint.bbclass</filename> + + + The oelint class is an + obsolete lint checking tool that exists in + meta/classes in the + Source Directory. + + + + A number of classes exist that are could be generally useful in + OE-Core but are never actually used within OE-Core itself. + The oelint class is one such example. + However, being aware of this class can reduce the proliferation of + different versions of similar classes across multiple layers. + +
+ +
+ <filename>own-mirrors.bbclass</filename> + + + The own-mirrors class makes it + easier to set up your own + PREMIRRORS + from which to first fetch source before attempting to fetch it from the + upstream specified in + SRC_URI + within each recipe. + + + + To use this class, inherit it globally and specify + SOURCE_MIRROR_URL. + Here is an example: + + INHERIT += "own-mirrors" + SOURCE_MIRROR_URL = "http://example.com/my-source-mirror" + + You can specify only a single URL in + SOURCE_MIRROR_URL. + +
+ +
+ <filename>package.bbclass</filename> + + + The package class supports generating + packages from a build's output. + The core generic functionality is in + package.bbclass. + The code specific to particular package types resides in these + package-specific classes: + package_deb, + package_rpm, + package_ipk, + and + package_tar. + + + + You can control the list of resulting package formats by using the + PACKAGE_CLASSES + variable defined in your conf/local.conf + configuration file, which is located in the + Build Directory. + When defining the variable, you can specify one or more package types. + Since images are generated from packages, a packaging class is + needed to enable image generation. + The first class listed in this variable is used for image generation. + + + + If you take the optional step to set up a repository (package feed) + on the development host that can be used by Smart, you can + install packages from the feed while you are running the image + on the target (i.e. runtime installation of packages). + For more information, see the + "Using Runtime Package Management" + section in the Yocto Project Development Manual. + + + + The package-specific class you choose can affect build-time performance + and has space ramifications. + In general, building a package with IPK takes about thirty percent less + time as compared to using RPM to build the same or similar package. + This comparison takes into account a complete build of the package with + all dependencies previously built. + The reason for this discrepancy is because the RPM package manager + creates and processes more + Metadata than the + IPK package manager. + Consequently, you might consider setting + PACKAGE_CLASSES to "package_ipk" if you are + building smaller systems. + + + + Before making your package manager decision, however, you should + consider some further things about using RPM: + + + RPM starts to provide more abilities than IPK due to + the fact that it processes more Metadata. + For example, this information includes individual file types, + file checksum generation and evaluation on install, sparse file + support, conflict detection and resolution for Multilib systems, + ACID style upgrade, and repackaging abilities for rollbacks. + + + For smaller systems, the extra space used for the Berkeley + Database and the amount of metadata when using RPM can affect + your ability to perform on-device upgrades. + + + + + + You can find additional information on the effects of the package + class at these two Yocto Project mailing list links: + + + https://lists.yoctoproject.org/pipermail/poky/2011-May/006362.html + + https://lists.yoctoproject.org/pipermail/poky/2011-May/006363.html + + +
+ +
+ <filename>package_deb.bbclass</filename> + + + The package_deb class + provides support for creating packages that use the + .deb file format. + The class ensures the packages are written out to the + ${DEPLOY_DIR}/deb + directory in a .deb file format. + + + + This class inherits the + package + class and is enabled through the + PACKAGE_CLASSES + variable in the local.conf file. + +
+ +
+ <filename>package_ipk.bbclass</filename> + + + The package_ipk class + provides support for creating packages that use the + .ipk file format. + The class ensures the packages are written out to the + ${DEPLOY_DIR}/ipk + directory in a .ipk file format. + + + + This class inherits the + package + class and is enabled through the + PACKAGE_CLASSES + variable in the local.conf file. + +
+ +
+ <filename>package_rpm.bbclass</filename> + + + The package_deb class + provides support for creating packages that use the + .rpm file format. + The class ensures the packages are written out to the + ${DEPLOY_DIR}/rpm + directory in a .rpm file format. + + + + This class inherits the + package + class and is enabled through the + PACKAGE_CLASSES + variable in the local.conf file. + +
+ +
+ <filename>package_tar.bbclass</filename> + + + The package_tar + class provides support for creating packages that use the + .tar file format. + The class ensures the packages are written out to the + ${DEPLOY_DIR}/tar + directory in a .tar file format. + + + + This class inherits the + package + class and is enabled through the + PACKAGE_CLASSES + variable in the local.conf file. + + You cannot specify the package_tar class + first using the PACKAGE_CLASSES variable. + You must use .deb, + .ipk, or .rpm file + formats for your image or SDK. + + +
+ +
+ <filename>packagedata.bbclass</filename> + + + The packagedata class provides + common functionality for reading pkgdata files + found in + PKGDATA_DIR. + These files contain information about each output package produced by + the OpenEmbedded build system. + + + + This class is enabled by default because it is inherited by the + package + class. + +
+ +
+ <filename>packagegroup.bbclass</filename> + + + The packagegroup class sets default values + appropriate for package group recipes (e.g. + PACKAGES, + PACKAGE_ARCH, + ALLOW_EMPTY, + and so forth). + It is highly recommended that all package group recipes inherit this class. + + + + For information on how to use this class, see the + "Customizing Images Using Custom Package Groups" + section in the Yocto Project Development Manual. + + + + Previously, this class was called the task class. + +
+ +
+ <filename>packageinfo.bbclass</filename> + + + The packageinfo class + gives a BitBake user interface the ability to retrieve information + about output packages from the pkgdata files. + + + + This class is enabled automatically when using the + Hob + user interface. + +
+ +
+ <filename>patch.bbclass</filename> + + + The patch class provides all functionality for + applying patches during the do_patch task. + + + + This class is enabled by default because it is inherited by the + base + class. + +
+ +
+ <filename>perlnative.bbclass</filename> + + + When inherited by a recipe, the perlnative class + supports using the native version of Perl built by the build system + rather than using the version provided by the build host. + +
+ +
+ <filename>pixbufcache.bbclass</filename> + + + The pixbufcache class generates the proper + post-install and post-remove (postinst/postrm) scriptlets for packages + that install pixbuf loaders, which are used with + gdk-pixbuf. + These scriptlets call update_pixbuf_cache + to add the pixbuf loaders to the cache. + Since the cache files are architecture-specific, + update_pixbuf_cache is run using QEMU if the + postinst scriptlets need to be run on the build host during image + creation. + + + + If the pixbuf loaders being installed are in packages other + than the recipe's main package, set + PIXBUF_PACKAGES + to specify the packages containing the loaders. + +
+ +
+ <filename>pkgconfig.bbclass</filename> + + + The pkg-config class provides a standard way to get + header and library information. + This class aims to smooth integration of + pkg-config into libraries that use it. + + + + During staging, BitBake installs pkg-config data into the + sysroots/ directory. + By making use of sysroot functionality within pkg-config, + this class no longer has to manipulate the files. + +
+ +
+ <filename>populate_sdk.bbclass</filename> + + + The populate_sdk class provides support for + SDK-only recipes. + +
+ +
+ <filename>populate_sdk_*.bbclass</filename> + + + The populate_sdk_* classes support SDK creation + and consist of the following classes: + + populate_sdk_base: + The base class supporting SDK creation under all package + managers (i.e. DEB, RPM, and IPK). + populate_sdk_deb: + Supports creation of the SDK given the Debian package manager. + + populate_sdk_rpm: + Supports creation of the SDK given the RPM package manager. + + populate_sdk_ipk: + Supports creation of the SDK given the IPK package manager. + + + + + + The populate_sdk_base package inherits the + appropriate populate_sdk_* (i.e. + deb, rpm, and + ipk) based on + IMAGE_PKGTYPE. + + + + The base class ensures all source and destination directories are + established and then populates the SDK. + After populating the SDK, the populate_sdk_base + class constructs two images: + SDK_ARCH-nativesdk, + which contains the cross-compiler and associated tooling, and the + target, which contains a target root filesystem that is configured for + the SDK usage. + These two images reside in + SDK_OUTPUT, + which consists of the following: + + ${SDK_OUTPUT}/<sdk_arch-nativesdk pkgs> + ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/<target pkgs> + + + + + Finally, the base populate SDK class creates the toolchain + environment setup script, the tarball of the SDK, and the installer. + + + + The respective populate_sdk_deb, + populate_sdk_rpm, and + populate_sdk_ipk classes each support the + specific type of SDK. + These classes are inherited by and used with the + populate_sdk_base class. + +
+ +
+ <filename>prexport.bbclass</filename> + + + The prexport class provides functionality for + exporting + PR values. + + This class is not intended to be used directly. + Rather, it is enabled when using + "bitbake-prserv-tool export". + + +
+ +
+ <filename>primport.bbclass</filename> + + + The primport class provides functionality for + importing + PR values. + + This class is not intended to be used directly. + Rather, it is enabled when using + "bitbake-prserv-tool import". + + +
+ +
+ <filename>prserv.bbclass</filename> + + + The prserv class provides functionality for + using a + PR service + in order to automatically manage the incrementing of the + PR variable for + each recipe. + + + + This class is enabled by default because it is inherited by the + package + class. + However, the OpenEmbedded build system will not enable the + functionality of this class unless + PRSERV_HOST + has been set. + +
+ +
+ <filename>ptest.bbclass</filename> + + + The ptest class provides functionality for + packaging and installing runtime tests for recipes that build software + that provides these tests. + + + + This class is intended to be inherited by individual recipes. + However, the class' functionality is largely disabled unless "ptest" + appears in + DISTRO_FEATURES. + See the + "Testing Packages With ptest" + section in the Yocto Project Development Manual for more information + on ptest. + +
+ +
+ <filename>python-dir.bbclass</filename> + + + The python-dir class provides the base version, + location, and site package location for Python. + +
+ +
+ <filename>pythonnative.bbclass</filename> + + + When inherited by a recipe, the pythonnative class + supports using the native version of Python built by the build system + rather than using the version provided by the build host. + +
+ +
+ <filename>qemu.bbclass</filename> + + + The qemu class provides functionality for recipes + that either need QEMU or test for the existence of QEMU. + Typically, this class is used to run programs for a target system on + the build host using QEMU's application emulation mode. + +
+ +
+ <filename>qmake*.bbclass</filename> + + + The qmake* classes support recipes that + need to build software that uses Qt's qmake + build system and are comprised of the following: + + qmake_base: + Provides base functionality for all versions of + qmake. + qmake2: + Extends base functionality for qmake 2.x as + used by Qt 4.x. + + + + + If you need to set any configuration variables or pass any options to + qmake, you can add these to the + EXTRA_QMAKEVARS_PRE + or + EXTRA_QMAKEVARS_POST + variables, depending on whether the arguments need to be before or + after the .pro file list on the command line, + respectively. + + + + By default, all .pro files are built. + If you want to specify your own subset of .pro + files to be built, specify them in the + QMAKE_PROFILES + variable. + +
+ +
+ <filename>qt4*.bbclass</filename> + + + The qt4* classes support recipes that need to + build software that uses the Qt development framework version 4.x + and consist of the following: + + qt4e: + Supports building against Qt/Embedded, which uses the + framebuffer for graphical output. + qt4x11: + Supports building against Qt/X11. + + + + + The classes inherit the + qmake2 + class. + +
+ +
+ <filename>relocatable.bbclass</filename> + + + The relocatable class enables relocation of + binaries when they are installed into the sysroot. + + + + This class makes use of the + chrpath + class and is used by both the + cross + and + native + classes. + +
+ +
+ <filename>rm_work.bbclass</filename> + + + The rm_work class supports deletion of temporary + workspace, which can ease your hard drive demands during builds. + + + + The OpenEmbedded build system can use a substantial amount of disk + space during the build process. + A portion of this space is the work files under the + ${TMPDIR}/work directory for each recipe. + Once the build system generates the packages for a recipe, the work + files for that recipe are no longer needed. + However, by default, the build system preserves these files + for inspection and possible debugging purposes. + If you would rather have these files deleted to save disk space + as the build progresses, you can enable rm_work + by adding the following to your local.conf file, + which is found in the + Build Directory. + + INHERIT += "rm_work" + + If you are modifying and building source code out of the work directory + for a recipe, enabling rm_work will potentially + result in your changes to the source being lost. + To exclude some recipes from having their work directories deleted by + rm_work, you can add the names of the recipe or + recipes you are working on to the RM_WORK_EXCLUDE + variable, which can also be set in your local.conf + file. + Here is an example: + + RM_WORK_EXCLUDE += "busybox eglibc" + + +
+ +
+ <filename>rootfs*.bbclass</filename> + + + The rootfs* classes support creating + the root filesystem for an image and consist of the following classes: + + + The rootfs_deb class, which supports + creation of root filesystems for images built using + .deb packages. + + The rootfs_rpm class, which supports + creation of root filesystems for images built using + .rpm packages. + + The rootfs_ipk class, which supports + creation of root filesystems for images built using + .ipk packages. + + + + + The root filesystem is created from packages using one of the + rootfs*.bbclass files as determined by the + PACKAGE_CLASSES + variable. + + + + For information on how root filesystem images are created, see the + "Image Generation" + section. + +
+ +
+ <filename>sanity.bbclass</filename> + + + The sanity class checks to see if prerequisite + software is present on the host system so that users can be notified + of potential problems that might affect their build. + The class also performs basic user configuration checks from + the local.conf configuration file to + prevent common mistakes that cause build failures. + Distribution policy usually determines whether to include this class. + +
+ +
+ <filename>scons.bbclass</filename> + + + The scons class supports recipes that need to + build software that uses the SCons build system. + You can use the + EXTRA_OESCONS + variable to specify additional configuration options you want to pass + SCons command line. + +
+ +
+ <filename>sdl.bbclass</filename> - The OpenEmbedded build system can use a substantial amount of disk - space during the build process. - A portion of this space is the work files under the - ${TMPDIR}/work directory for each recipe. - Once the build system generates the packages for a recipe, the work - files for that recipe are no longer needed. - However, by default, the build system preserves these files - for inspection and possible debugging purposes. - If you would rather have these files deleted to save disk space - as the build progresses, you can enable rm_work - by adding the following to your local.conf file, - which is found in the - Build Directory. - - INHERIT += "rm_work" - - If you are modifying and building source code out of the work directory - for a recipe, enabling rm_work will potentially - result in your changes to the source being lost. - To exclude some recipes from having their work directories deleted by - rm_work, you can add the names of the recipe or - recipes you are working on to the RM_WORK_EXCLUDE - variable, which can also be set in your local.conf - file. - Here is an example: - - RM_WORK_EXCLUDE += "busybox eglibc" - + The sdl class supports recipes that need to build + software that uses the Simple DirectMedia Layer (SDL) library.
+
+ <filename>setuptools.bbclass</filename> + + + The setuptools class supports Python extensions + that use setuptools-based build systems. + If your recipe uses these build systems, the recipe needs to + inherit the setuptools class. + +
+ +
+ <filename>sip.bbclass</filename> + + + The sip class + supports recipes that build or package SIP-based Python bindings. + +
+ +
+ <filename>siteconfig.bbclass</filename> + + + The siteconfig class + provides functionality for handling site configuration. + The class is used by the + autotools + class to accelerate the do_configure task. + +
- Autotools Configuration Data Cache - <filename>siteinfo.bbclass</filename> + <filename>siteinfo.bbclass</filename> + + + The siteinfo class provides information about + the targets that might be needed by other classes or recipes. + - Autotools can require tests that must execute on the target hardware. - Since this is not possible in general when cross compiling, site information is - used to provide cached test results so these tests can be skipped over but - still make the correct values available. - The meta/site directory - contains test results sorted into different categories such as architecture, endianness, and - the libc used. + As an example, consider Autotools, which can require tests that must + execute on the target hardware. + Since this is not possible in general when cross compiling, site + information is used to provide cached test results so these tests can + be skipped over but still make the correct values available. + The + meta/site directory + contains test results sorted into different categories such as + architecture, endianness, and the libc used. Site information provides a list of files containing data relevant to the current build in the CONFIG_SITE variable @@ -877,85 +2607,188 @@ - Because this class is included from base.bbclass, it is always active. + Because the + base class + includes the siteinfo class, it is always active.
-
- Adding Users - <filename>useradd.bbclass</filename> +
+ <filename>spdx.bbclass</filename> - If you have packages that install files that are owned by custom users or groups, - you can use this class to specify those packages and associate the users and groups - with those packages. - The meta-skeleton/recipes-skeleton/useradd/useradd-example.bb - recipe in the Source Directory - provides a simple example that shows how to add three - users and groups to two packages. - See the useradd-example.bb for more information on how to - use this class. + The spdx class integrates real-time license + scanning, generation of SPDX standard output, and verification + of license information during the build. + + This class is currently at the prototype stage in the 1.5 + release. +
-
- <filename>externalsrc.bbclass</filename> +
+ <filename>sstate.bbclass</filename> - You can use this class to build software from source code that is - external to the OpenEmbedded build system. - Building software from an external source tree means that the build - system's normal fetch, unpack, and patch process is not used. + The sstate class provides support for Shared + State (sstate). + By default, the class is enabled through the + INHERIT_DISTRO + variable's default value. - By default, the OpenEmbedded build system uses the - S and - B variables to - locate unpacked recipe source code and to build it, respectively. - When your recipe inherits externalsrc.bbclass, - you use the - EXTERNALSRC - and - EXTERNALSRC_BUILD - variables to ultimately define S and - B. + For more information on sstate, see the + "Shared State Cache" + section. +
+ +
+ <filename>staging.bbclass</filename> - By default, this class expects the source code to support recipe builds - that use the B - variable to point to the directory in which the OpenEmbedded build - system places the generated objects built from the recipes. - By default, the B directory is set to the - following, which is separate from the source directory - (S): + The staging class provides support for staging + files into the sysroot during the + do_populate_sysroot task. + The class is enabled by default because it is inherited by the + base + class. + +
+ +
+ <filename>syslinux.bbclass</filename> + + + The syslinux class provides syslinux-specific + functions for building bootable images. + + + + The class supports the following variables: + + INITRD: + Indicates a filesystem image to use as an initial RAM disk + (initrd). + This variable is optional. + ROOTFS: + Indicates a filesystem image to include as the root filesystem. + This variable is optional. + AUTO_SYSLINUXMENU: + Enables creating an automatic menu when set to "1". + + LABELS: + Lists targets for automatic configuration. + + APPEND: + Lists append string overrides for each label. + + SYSLINUX_OPTS: + Lists additional options to add to the syslinux file. + Semicolon characters separate multiple options. + + SYSLINUX_SPLASH: + Lists a background for the VGA boot menu when you are using the + boot menu. + SYSLINUX_DEFAULT_CONSOLE: + Set to "console=ttyX" to change kernel boot default console. + + SYSLINUX_SERIAL: + Sets an alternate serial port. + Or, turns off serial when the variable is set with an + empty string. + SYSLINUX_SERIAL_TTY: + Sets an alternate "console=tty..." kernel boot argument. + + + +
+ +
+ <filename>systemd.bbclass</filename> + + + The systemd class provides support for recipes + that install systemd unit files. + + + + The functionality for this class is disabled unless you have "systemd" + in + DISTRO_FEATURES. + + + + Under this class, the recipe or Makefile (i.e. whatever the recipe is + calling during the do_install task) installs unit + files into + ${D}${systemd_unitdir}/system. + If the unit files being installed go into packages other than the + main package, you need to set + SYSTEMD_PACKAGES + in your recipe to identify the packages in which the files will be + installed. + + + + You should set + SYSTEMD_SERVICE + to the name of the service file. + You should also use a package name override to indicate the package + to which the value applies. + If the value applies to the recipe's main package, use + ${PN}. + Here is an example from the connman recipe: - ${WORKDIR}/${BPN}/{PV}/ + SYSTEMD_SERVICE_${PN} = "connman.service" - See the glossary entries for the - WORKDIR, - BPN, - PV, + Services are set up to start on boot automatically unless + you have set + SYSTEMD_AUTO_ENABLE + to "disable". - For more information on - externalsrc.bbclass, see the comments in - meta/classes/externalsrc.bbclass in the - Source Directory. - For information on how to use externalsrc.bbclass, - see the - "Building Software from an External Source" + For more information on systemd, see the + "Selecting an Initialization Manager" section in the Yocto Project Development Manual.
+
+ <filename>terminal.bbclass</filename> + + + The terminal class provides support for starting + a terminal session. + The + OE_TERMINAL + variable controls which terminal emulator is used for the session. + + + + Other classes use the terminal class anywhere a + separate terminal session needs to be started. + For example, the + patch + class assuming + PATCHRESOLVE + is set to "user", the + cml1 + class, and the + devshell + class all use the terminal class. + +
+
<filename>testimage.bbclass</filename> - You can use this class to enable running a series of automated tests - for images. + The testimage class supports running automated + tests against images. The class handles loading the tests and starting the image. Currently, there is only support for running these tests @@ -979,122 +2812,236 @@
-
- Other Classes +
+ <filename>tinderclient.bbclass</filename> - Thus far, this chapter has discussed only the most useful and important - classes. - However, other classes exist within the meta/classes directory - in the Source Directory. - You can examine the .bbclass files directly for more - information. + The tinderclient class submits build results to + an external Tinderbox instance. + + This class is currently unmaintained. + + +
+ +
+ <filename>toaster.bbclass</filename> + + + The toaster class collects information about + packages and images and sends them as events that the BitBake + user interface can receive. + The class is enabled when the Toaster user interface is running. + + + + This class is not intended to be used directly. + +
+ +
+ <filename>toolchain-scripts.bbclass</filename> + + + The toolchain-scripts class provides the scripts + used for setting up the environment for installed SDKs. + +
+ +
+ <filename>typecheck.bbclass</filename> + + + The typecheck class provides support for + validating the values of variables set at the configuration level + against their defined types. + The OpenEmbedded build system allows you to define the type of a + variable using the "type" varflag. + Here is an example: + + IMAGE_FEATURES[type] = "list" + + +
+ +
+ <filename>uboot-config.bbclass</filename> + + + The uboot-config class provides support for + U-Boot configuration for a machine. + Specify the machine in your recipe as follows: + + UBOOT_CONFIG ??= <default> + UBOOT_CONFIG[foo] = "config,images" + + You can also specify the machine using this method: + + UBOOT_MACHINE = "config" + + See the + UBOOT_CONFIG + and + UBOOT_MACHINE + variables for additional information. + +
+ +
+ <filename>update-alternatives.bbclass</filename> + + + The update-alternatives class helps the + alternatives system when multiple sources provide the same command. + This situation occurs when several programs that have the same or + similar function are installed with the same name. + For example, the ar command is available from the + busybox, binutils and + elfutils packages. + The update-alternatives class handles + renaming the binaries so that multiple packages can be installed + without conflicts. + The ar command still works regardless of which + packages are installed or subsequently removed. + The class renames the conflicting binary in each package and symlinks + the highest priority binary during installation or removal of packages. + + + + To use this class, you need to define a number of variables: + + ALTERNATIVE + + ALTERNATIVE_LINK_NAME + + ALTERNATIVE_TARGET + + ALTERNATIVE_PRIORITY + + + These variables list alternative commands needed by a package, + provide pathnames for links, default links for targets, and + so forth. + For details on how to use this class, see the comments in the + update-alternatives.bbclass. + + + + You can use the update-alternatives command + directly in your recipes. + However, this class simplifies things in most cases. + +
+ +
+ <filename>update-rc.d.bbclass</filename> + + + The update-rc.d class uses + update-rc.d to safely install an + initialization script on behalf of the package. + The OpenEmbedded build system takes care of details such as making + sure the script is stopped before a package is removed and started when + the package is installed. + + + + Three variables control this class: + INITSCRIPT_PACKAGES, + INITSCRIPT_NAME and + INITSCRIPT_PARAMS. + See the variable links for details. + +
+ +
+ <filename>useradd.bbclass</filename> + + + The useradd class supports the addition of users + or groups for usage by the package on the target. + For example, if you have packages that contain system services that + should be run under their own user or group, you can use this class to + enable creation of the user or group. + The meta-skeleton/recipes-skeleton/useradd/useradd-example.bb + recipe in the Source Directory + provides a simple example that shows how to add three + users and groups to two packages. + See the useradd-example.bb recipe for more + information on how to use this class. + + + + The useradd class supports the + USERADD_PACKAGES, + USERADD_PARAM, + GROUPADD_PARAM, + and + GROUPMEMS_PARAM + variables. + +
+ +
+ <filename>utility-tasks.bbclass</filename> + + + The utility-tasks class provides support for + various "utility" type tasks that are applicable to all recipes, + such as do_clean and + do_listtasks. + + + + This class is enabled by default because it is inherited by + the + base + class. + +
+ +
+ <filename>utils.bbclass</filename> + + + The utils class provides some useful Python + functions that are typically used in inline Python expressions + (e.g. ${@...}). + One example use is for base_contains(). + + + + This class is enabled by default because it is inherited by the + base + class. + +
+ +
+ <filename>vala.bbclass</filename> + + + The vala class supports recipes that need to + build software written using the Vala programming language. + +
+ +
+ <filename>waf.bbclass</filename> + + + The waf class supports recipes that need to build + software that uses the Waf build system. + You can use the + EXTRA_OECONF + variable to specify additional configuration options to be passed on + the Waf command line.
diff --git a/documentation/ref-manual/ref-features.xml b/documentation/ref-manual/ref-features.xml index 92c5e8abb29..843cf81d664 100644 --- a/documentation/ref-manual/ref-features.xml +++ b/documentation/ref-manual/ref-features.xml @@ -3,7 +3,7 @@ [ %poky; ] > - Reference: Features + Features This chapter provides a reference of shipped machine and distro features @@ -38,23 +38,34 @@ Here is an example that discovers the recipes whose build is potentially changed based on a given feature: - $ cd $HOME/poky + $ cd poky $ git grep 'contains.*MACHINE_FEATURES.*<feature>'
- Distro + Distro Features The items below are features you can use with - DISTRO_FEATURES. - Features do not have a one-to-one correspondence to packages, and they can - go beyond simply controlling the installation of a package or packages. - Sometimes a feature can influence how certain recipes are built. - For example, a feature might determine whether a particular configure option - is specified within do_configure for a particular - recipe. + DISTRO_FEATURES + to enable features across your distribution. + Features do not have a one-to-one correspondence to packages, + and they can go beyond simply controlling the installation of a + package or packages. + In most cases, the presence or absence of a feature translates to + the appropriate option supplied to the configure script during + do_configure for the recipes that optionally + support the feature. + + + + Some distro features are also machine features. + These select features make sense to be controlled both at + the machine and distribution configuration level. + See the + COMBINED_FEATURES + variable for more information. @@ -75,7 +86,7 @@ support. ipv6: Include IPv6 support. - irda: Include Irda support. + irda: Include IrDA support. keyboard: Include keyboard support (e.g. keymaps will be loaded during boot). @@ -120,7 +131,7 @@
- Machine + Machine Features The items below are features you can use with @@ -146,7 +157,7 @@ ext2: Hardware HDD or Microdrive - irda: Hardware has Irda support + irda: Hardware has IrDA support keyboard: Hardware has a keyboard @@ -171,7 +182,7 @@
- Images + Image Features The contents of images generated by the OpenEmbedded build system can be controlled by the diff --git a/documentation/ref-manual/ref-images.xml b/documentation/ref-manual/ref-images.xml index 37c8051a261..a002c59d3fa 100644 --- a/documentation/ref-manual/ref-images.xml +++ b/documentation/ref-manual/ref-images.xml @@ -90,14 +90,18 @@ core-image-clutter: An image with support for the Open GL-based toolkit Clutter, which enables development of rich and animated graphical user interfaces. - core-image-gtk-directfb: - An image that uses gtk+ over directfb - instead of X11. - In order to build, this image requires specific distro configuration that enables - gtk over directfb. + core-image-directfb: + An image that uses directfb instead of X11. + core-image-x11: A very basic X11 image with a terminal. + core-image-weston: + An image that provides the Wayland protocol libraries and the + reference Weston compositor. + For more information, see the + "Wayland" section. + qt4e-demo-image: An image that launches into the demo application for the embedded (not based on X11) version of Qt. diff --git a/documentation/ref-manual/ref-manual.xml b/documentation/ref-manual/ref-manual.xml index 41354bc847f..7db880b404f 100644 --- a/documentation/ref-manual/ref-manual.xml +++ b/documentation/ref-manual/ref-manual.xml @@ -72,6 +72,11 @@ October 2013 Released with the Yocto Project 1.5 Release. + + 1.5.1 + Sometime in 2013 + Released with the Yocto Project 1.5.1 Release. + @@ -85,11 +90,10 @@ the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales as published by Creative Commons. - Due to production processes, there could be differences between the Yocto Project - documentation bundled in the release tarball and the - Yocto Project Reference Manual on - the Yocto Project website. - For the latest version of this manual, see the manual on the website. + For the latest version of this manual associated with this + Yocto Project release, see the + Yocto Project Reference Manual + from the Yocto Project website. diff --git a/documentation/ref-manual/ref-structure.xml b/documentation/ref-manual/ref-structure.xml index 13803f5a411..60f547d57c4 100644 --- a/documentation/ref-manual/ref-structure.xml +++ b/documentation/ref-manual/ref-structure.xml @@ -39,23 +39,27 @@ This directory includes a copy of BitBake for ease of use. - The copy usually matches the current stable BitBake release from the BitBake project. + The copy usually matches the current stable BitBake release from + the BitBake project. BitBake, a Metadata - interpreter, reads the Yocto Project metadata and runs the tasks + interpreter, reads the Yocto Project Metadata and runs the tasks defined by that data. - Failures are usually from the metadata and not from BitBake itself. + Failures are usually from the Metadata and not from BitBake itself. Consequently, most users do not need to worry about BitBake. - When you run the bitbake command, the wrapper script in - scripts/ is executed to run the main BitBake executable, - which resides in the bitbake/bin/ directory. - Sourcing the &OE_INIT_FILE; - script places the scripts and bitbake/bin - directories (in that order) into the shell's PATH environment - variable. + When you run the bitbake command, the + main BitBake executable, which resides in the + bitbake/bin/ directory, starts. + Sourcing an environment setup script (e.g. + &OE_INIT_FILE; + or + oe-init-build-env-memres) + places the scripts and + bitbake/bin directories (in that order) into + the shell's PATH environment variable. @@ -74,7 +78,7 @@ the source tree is combined with the output. The Build Directory is created initially when you source - the OpenEmbedded build environment setup script + the OpenEmbedded build environment setup script (i.e. &OE_INIT_FILE; or @@ -97,7 +101,7 @@
- <filename>documentation</filename> + <filename>documentation/</filename> This directory holds the source for the Yocto Project documentation @@ -105,7 +109,7 @@ versions of the manuals. Each manual is contained in a sub-folder. For example, the files for this manual reside in - ref-manual. + the ref-manual/ directory.
@@ -175,9 +179,9 @@ - The scripts directory has useful scripts that assist contributing - back to the Yocto Project, such as create_pull_request and - send_pull_request. + The scripts directory has useful scripts that assist in contributing + back to the Yocto Project, such as create-pull-request and + send-pull-request.
@@ -185,9 +189,9 @@ <filename>&OE_INIT_FILE;</filename> - This script is one of two scripts that set up the OpenEmbedded build + This script is one of two scripts that set up the OpenEmbedded build environment. - For information on the other script, see the + For information on the other script, see the "oe-init-build-env-memres" section. @@ -196,7 +200,7 @@ Running this script with the source command in a shell makes changes to PATH and sets other core BitBake variables based on the current working directory. - You need to run an environment setup script before running BitBake + You need to run an environment setup script before running BitBake commands. The script uses other scripts within the scripts directory to do the bulk of the work. @@ -205,7 +209,8 @@ By default, running this script without a Build Directory - argument creates the build directory. + argument creates the build directory + in your current working directory. If you provide a Build Directory argument when you source the script, you direct the OpenEmbedded build system to create a Build Directory of your choice. @@ -231,11 +236,11 @@ <filename>oe-init-build-env-memres</filename> - This script is one of two scripts that set up the OpenEmbedded build - environment. - Setting up the environment with this script uses a - memory-resident BitBake. - For information on the other setup script, see the + This script is one of two scripts that set up the OpenEmbedded + build environment. + Aside from setting up the environment, this script starts a + memory-resident BitBake server. + For information on the other setup script, see the "&OE_INIT_FILE;" section. @@ -252,14 +257,14 @@ Running this script with the source command in a shell makes changes to PATH and sets other core BitBake variables based on the current working directory. - One of these variables is the + One of these variables is the BBSERVER - variable, which allows the OpenEmbedded build system to locate + variable, which allows the OpenEmbedded build system to locate the server that is running BitBake. - You need to run an environment setup script before running BitBake + You need to run an environment setup script before using BitBake commands. Following is the script syntax: @@ -270,33 +275,34 @@ - If you do not provide a port number with the script, the default - port "12345" is used. + If you do not provide a port number with the script, the + BitBake server at port "12345" is started. By default, running this script without a Build Directory - argument creates the build directory. + argument creates a build directory named + build. If you provide a Build Directory argument when you - source the script, you direct the OpenEmbedded - build system to create a Build Directory of your choice. - For example, the following command uses the default port number - "12345" and creates a Build Directory named + source the script, the Build Directory is + created using that name. + For example, the following command starts the BitBake server using + the default port "12345" and creates a Build Directory named mybuilds that is outside of the Source Directory: $ source oe-init-build-env-memres ~/mybuilds - The OpenEmbedded build system does not support file or + The OpenEmbedded build system does not support file or directory names that contain spaces. - If you attempt to run the + If you attempt to run the oe-init-build-env-memres script - from a Source Directory that contains spaces in either the - filenames or directory names, the script returns an error + from a Source Directory that contains spaces in either the + filenames or directory names, the script returns an error indicating no such file or directory. - Be sure to use a Source Directory free of names containing + Be sure to use a Source Directory free of names containing spaces. @@ -321,81 +327,72 @@ By default, this directory is named build. -
- <filename>build/pseudodone</filename> - - - This tag file indicates that the initial pseudo binary was created. - The file is built the first time BitBake is invoked. - -
-
<filename>build/conf/local.conf</filename> - This configuration file contains all the local user configurations + This configuration file contains all the local user configurations for your build environment. - The local.conf file contains documentation on + The local.conf file contains documentation on the various configuration options. - Any variable set here overrides any variable set elsewhere within - the environment unless that variable is hard-coded within a file + Any variable set here overrides any variable set elsewhere within + the environment unless that variable is hard-coded within a file (e.g. by using '=' instead of '?='). - Some variables are hard-coded for various reasons but these + Some variables are hard-coded for various reasons but these variables are relatively rare. - Edit this file to set the + Edit this file to set the MACHINE for which you want to build, which package types you wish to use (PACKAGE_CLASSES), - the location from which you want to downloaded files + the location from which you want to access downloaded files (DL_DIR), and how you want your host machine to use resources - (BB_NUMBER_THREADS + (BB_NUMBER_THREADS and PARALLEL_MAKE). - If local.conf is not present when you - start the build, the OpenEmbedded build system creates it from + If local.conf is not present when you + start the build, the OpenEmbedded build system creates it from local.conf.sample when - you source the top-level build environment + you source the top-level build environment setup script (i.e. &OE_INIT_FILE; - or + or oe-init-build-env-memres). - The source local.conf.sample file used + The source local.conf.sample file used depends on the $TEMPLATECONF script variable, - which defaults to /meta-yocto/conf - when you are building from the Yocto Project development - environment and defaults to /meta/conf when + which defaults to meta-yocto/conf + when you are building from the Yocto Project development + environment and defaults to meta/conf when you are building from the OpenEmbedded Core environment. - Because the script variable points to the source of the - local.conf.sample file, this implies that - you can configure your build environment from any layer by setting - the variable in the top-level build environment setup script as + Because the script variable points to the source of the + local.conf.sample file, this implies that + you can configure your build environment from any layer by setting + the variable in the top-level build environment setup script as follows: TEMPLATECONF=<your_layer>/conf - Once the build process gets the sample file, it uses - sed to substitute final - ${OEROOT} + Once the build process gets the sample file, it uses + sed to substitute final + ${OEROOT} values for all ##OEROOT## values. You can see how the TEMPLATECONF variable - is used by looking at the - /scripts/oe-setup-builddir script in the + is used by looking at the + scripts/oe-setup-builddir script in the Source Directory. - You can find the Yocto Project version of the - local.conf.sample file in the - /meta-yocto/conf directory. + You can find the Yocto Project version of the + local.conf.sample file in the + meta-yocto/conf directory.
@@ -408,48 +405,48 @@ layers, which are directory trees, traversed (or walked) by BitBake. The bblayers.conf file uses the - BBLAYERS + BBLAYERS variable to list the layers BitBake tries to find, and uses the BBLAYERS_NON_REMOVABLE variable to list layers that must not be removed. - If bblayers.conf is not present when you - start the build, the OpenEmbedded build system creates it from + If bblayers.conf is not present when you + start the build, the OpenEmbedded build system creates it from bblayers.conf.sample when - you source the top-level build environment + you source the top-level build environment setup script (i.e. &OE_INIT_FILE; - or + or oe-init-build-env-memres). - The source bblayers.conf.sample file used + The source bblayers.conf.sample file used depends on the $TEMPLATECONF script variable, - which defaults to /meta-yocto/conf - when you are building from the Yocto Project development - environment and defaults to /meta/conf when + which defaults to meta-yocto/conf + when you are building from the Yocto Project development + environment and defaults to meta/conf when you are building from the OpenEmbedded Core environment. - Because the script variable points to the source of the - bblayers.conf.sample file, this implies that + Because the script variable points to the source of the + bblayers.conf.sample file, this implies that you can base your build from any layer by setting the variable in the top-level build environment setup script as follows: TEMPLATECONF=<your_layer>/conf - Once the build process gets the sample file, it uses - sed to substitute final - ${OEROOT} + Once the build process gets the sample file, it uses + sed to substitute final + ${OEROOT} values for all ##OEROOT## values. You can see how the TEMPLATECONF variable - /scripts/oe-setup-builddir script in the + scripts/oe-setup-builddir script in the Source Directory. - You can find the Yocto Project version of the - bblayers.conf.sample file in the - /meta-yocto/conf directory. + You can find the Yocto Project version of the + bblayers.conf.sample file in the + meta-yocto/conf directory.
@@ -491,7 +488,7 @@ <filename>build/tmp/</filename> - This directory receives all the OpenEmbedded build system's output. + This directory receives all of the OpenEmbedded build system's output. BitBake creates this directory if it does not exist. As a last resort, to clean up a build and start it from scratch (other than the downloads), you can remove everything in the tmp directory or get rid of the @@ -555,6 +552,15 @@
+
+ <filename>build/tmp/deploy/ipk/</filename> + + + This directory receives .ipk packages produced by + the build process. + +
+
<filename>build/tmp/deploy/licenses/</filename> @@ -601,14 +607,6 @@
-
- <filename>build/tmp/deploy/ipk/</filename> - - - This directory receives .ipk packages produced by - the build process. -
-
<filename>build/tmp/sysroots/</filename> @@ -650,15 +648,6 @@
-
- <filename>build/tmp/pkgdata/</filename> - - - This directory contains intermediate packaging data that is used later in the packaging process. - For more information, see the "Packaging - package*.bbclass" section. - -
-
<filename>build/tmp/work/</filename> @@ -790,7 +779,7 @@ This directory contains common license files and several text files used by the build system. The text files contain minimal device information and - lists of files and directories with knows permissions. + lists of files and directories with known permissions.
diff --git a/documentation/ref-manual/ref-variables.xml b/documentation/ref-manual/ref-variables.xml index 2c01d78e779..1f71e7eb394 100644 --- a/documentation/ref-manual/ref-variables.xml +++ b/documentation/ref-manual/ref-variables.xml @@ -21,22 +21,22 @@ C D E - F - + F + G H - I + I K - L + L M O P - + Q R S T - U + U W @@ -53,15 +53,16 @@ By default, BitBake does not produce empty packages. This default behavior can cause issues when there is an RDEPENDS or - some other runtime hard-requirement on the existence of the package. + some other hard runtime requirement on the existence of the package. Like all package-controlling variables, you must always use them in - conjunction with a package name override. - Here is an example: + conjunction with a package name override, as in: ALLOW_EMPTY_${PN} = "1" + ALLOW_EMPTY_${PN}-dev = "1" + ALLOW_EMPTY_${PN}-staticdev = "1" @@ -88,7 +89,7 @@ ALTERNATIVE_busybox = "sh sed test bracket" For more information on the alternatives system, see the - "Alternatives - update-alternatives.bbclass" + "update-alternatives.bbclass" section. @@ -121,7 +122,7 @@ For more information on the alternatives system, see the - "Alternatives - update-alternatives.bbclass" + "update-alternatives.bbclass" section. @@ -146,7 +147,7 @@ For more information on the alternatives system, see the - "Alternatives - update-alternatives.bbclass" + "update-alternatives.bbclass" section. @@ -196,12 +197,27 @@ For more information on the alternatives system, see the - "Alternatives - update-alternatives.bbclass" + "update-alternatives.bbclass" section. + APPEND + + + An override list of append strings for each + LABEL. + + + + See the + grub-efi + class for more information on how this variable is used. + + + + AUTHOR The email address used to contact the original author @@ -209,6 +225,18 @@ + AUTO_SYSLINUXMENU + + + Enables creating an automatic menu. + You must set this in your recipe. + The + syslinux + class checks this variable. + + + + AUTOREV When SRCREV @@ -234,9 +262,9 @@ in which the OpenEmbedded build system places generated objects during a recipe's build process. By default, this directory is the same as the S - directory: + directory, which is defined as: - B = "${WORKDIR}/${BPN}/{PV}/" + S = "${WORKDIR}/${BP}/" You can separate the (S) directory and the directory pointed to by the B @@ -319,10 +347,11 @@ You can change the default behavior by setting this - variable to "1" in the local.conf - file in the - Build Directory - as follows: + variable to "1", "yes", or "true" + in your local.conf file, which is + located in the + Build Directory: + Here is an example: BB_DANGLINGAPPENDS_WARNONLY = "1" @@ -503,7 +532,7 @@ the Git repositories is not the default action by the OpenEmbedded build system. - BB_Generate_MIRROR_TARBALLS = "1" + BB_GENERATE_MIRROR_TARBALLS = "1" Set this variable in your local.conf file in the @@ -515,7 +544,7 @@ BB_NUMBER_THREADS The maximum number of tasks BitBake should run in parallel at any one time. - If your host development system supports multiple cores a good rule of thumb + If your host development system supports multiple cores, a good rule of thumb is to set this variable to twice the number of cores. @@ -591,7 +620,7 @@ for a layer with no dependencies, is the lowest defined priority + 1 (or 1 if no priorities are defined). - You can use the command bitbake-layers show_layers to list + You can use the command bitbake-layers show-layers to list all configured layers along with their priorities. @@ -636,10 +665,15 @@ BBLAYERS_NON_REMOVABLE -Core layer for images cannot be removed Lists core layers that cannot be removed from the - bblayers.conf file. - In order for BitBake to build your image, your + bblayers.conf file during a build + using the + Hob. + + When building an image outside of Hob, this variable + is ignored. + + In order for BitBake to build your image using Hob, your bblayers.conf file must include the meta and meta-yocto core layers. @@ -695,10 +729,10 @@ Core layer for images cannot be removed The following example uses a complete regular expression to tell BitBake to ignore all recipe and recipe append - files in the /meta-ti/recipes-misc/ + files in the meta-ti/recipes-misc/ directory: - BBMASK = "/meta-ti/recipes-misc/" + BBMASK = "meta-ti/recipes-misc/" If you want to mask out multiple directories or recipes, use the vertical bar to separate the regular expression @@ -819,6 +853,18 @@ Core layer for images cannot be removed + BUGTRACKER + + + Specifies a URL for an upstream bug tracking website for + a recipe. + The OpenEmbedded build system does not use this variable. + Rather, the variable is a useful pointer in case a bug + in the software being built needs to be manually reported. + + + + BUILDDIR @@ -837,6 +883,20 @@ Core layer for images cannot be removed + BUILDSTATS_BASE + + + Points to the location of the directory that holds build + statistics when you use and enable the + buildstats + class. + The BUILDSTATS_BASE directory defaults + to + ${TMPDIR}/buildstats/. + + + + BUSYBOX_SPLIT_SUID @@ -870,12 +930,55 @@ Core layer for images cannot be removed + CLASSOVERRIDE + + + An internal variable specifying the special class override + that should currently apply (e.g. "class-target", + "class-native", and so forth). + The classes that use this variable set it to + appropriate values. + + + + You do not normally directly interact with this variable. + The value for the CLASSOVERRIDE + variable goes into + OVERRIDES + and then can be used as an override. + Here is an example where "python-native" is added to + DEPENDS + only when building for the native case: + + DEPENDS_append_class-native = " python-native" + + + + + COMBINED_FEATURES - A set of features common between + + Provides a list of hardware features that are enabled in + both + MACHINE_FEATURES + and + DISTRO_FEATURES. + This select list of features contains features that make + sense to be controlled both at the machine and distribution + configuration level. + For example, the "bluetooth" feature requires hardware + support but should also be optional at the distribution + level, in case the hardware supports Bluetooth but you + do not ever intend to use it. + + + + For more information, see the MACHINE_FEATURES - and DISTRO_FEATURES. - See the glossary descriptions for these variables for more information. + and DISTRO_FEATURES + variables. + @@ -969,8 +1072,8 @@ Core layer for images cannot be removed Then, provide a space-separated list of files. Here is an example: - CONFFILES_${PN} += "${sysconfdir}/file1 \ - ${sysconfdir}/file2 ${sysconfdir}/file3" + CONFFILES_${PN} += "${sysconfdir}/file1 \ + ${sysconfdir}/file2 ${sysconfdir}/file3" @@ -993,7 +1096,7 @@ Core layer for images cannot be removed /etc or ${bindir} rather than /usr/bin. You can find a list of these variables at the top of the - /meta/conf/bitbake.conf file in the + meta/conf/bitbake.conf file in the Source Directory. @@ -1010,6 +1113,24 @@ Core layer for images cannot be removed + CONFLICT_DISTRO_FEATURES + + + When a recipe inherits the + distro_features_check class, this + variable identifies distribution features that would + be in conflict should the recipe + be built. + In other words, if the + CONFLICT_DISTRO_FEATURES variable + lists a feature that also appears in + DISTRO_FEATURES within the + current configuration, an error occurs and the + build stops. + + + + CORE_IMAGE_EXTRA_INSTALL @@ -1030,7 +1151,7 @@ Core layer for images cannot be removed Specifies the parent directory of the OpenEmbedded - Core Metadata layer (i.e. /meta). + Core Metadata layer (i.e. meta). @@ -1085,7 +1206,7 @@ Core layer for images cannot be removed TARGET_CFLAGS and CFLAGS when compiling a system for debugging. - This variable defaults to "-O -fno-omit-frame-pointer -g". + This variable defaults to "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe". @@ -1108,7 +1229,7 @@ Core layer for images cannot be removed The bias provided by DEFAULT_PREFERENCE is weak and is overridden by BBFILE_PRIORITY - if the that variable is different between two layers + if that variable is different between two layers that contain different versions of the same recipe. @@ -1156,7 +1277,7 @@ Core layer for images cannot be removed files that are ready to be used outside of the build system. By default, this directory resides within the Build Directory - as tmp/deploy. + as ${TMPDIR}/deploy. @@ -1183,7 +1304,7 @@ Core layer for images cannot be removed ${MACHINE} name. By default, this directory resides within the Build Directory - as tmp/deploy/images/${MACHINE}/. + as ${DEPLOY_DIR}/images/${MACHINE}/. @@ -1200,6 +1321,27 @@ Core layer for images cannot be removed + DEPLOYDIR + + + For recipes that inherit the + deploy + class, the DEPLOYDIR points to a + temporary work area for deployed files that is set in the + deploy class as follows: + + DEPLOYDIR = "${WORKDIR}/deploy-${PN}" + + Recipes inheriting the deploy class + should copy files to be deployed into + DEPLOYDIR, and the class will take + care of copying them into + DEPLOY_DIR_IMAGE + afterwards. + + + + DESCRIPTION The package description used by package managers. @@ -1215,18 +1357,40 @@ Core layer for images cannot be removed The short name of the distribution. - This variable corresponds to a file with the - extension .conf - located in a conf/distro directory - within the - Metadata - that contains the distribution configuration. - The value must not contain spaces, and is typically all lower-case. + This variable corresponds to a distribution + configuration file whose root name is the same as the + variable's argument and whose filename extension is + .conf. + For example, the distribution configuration file for the + Poky distribution is named poky.conf + and resides in the + meta-yocto/conf/distro directory of + the + Source Directory. + + + + Within that poky.conf file, the + DISTRO variable is set as follows: + + DISTRO = "poky" + + - If the variable is blank, a set of default configuration - will be used, which is specified - within meta/conf/distro/defaultsetup.conf. + Distribution configuration files are located in a + conf/distro directory within the + Metadata + that contains the distribution configuration. + The value for DISTRO must not contain + spaces, and is typically all lower-case. + + If the DISTRO variable is blank, a set + of default configurations are used, which are specified + within + meta/conf/distro/defaultsetup.conf + also in the Source Directory. + @@ -1261,10 +1425,31 @@ Core layer for images cannot be removed DISTRO_FEATURES - The features enabled for the distribution. - For a list of supported features that ship with the - Yocto Project, see the - "Distro" + + The software support you want in your distribution for + various features. + You define your distribution features in the distribution + configuration file. + + + + In most cases, the presence or absence of a feature in + DISTRO_FEATURES is translated to the + appropriate option supplied to the configure script + during do_configure for recipes that + optionally support the feature. + For example, specifying "x11" in + DISTRO_FEATURES, causes + every piece of software built for the target that can + optionally support X11 to have its X11 support enabled. + + + + Two more examples are Bluetooth and NFS support. + For a more complete list of features that ships with the + Yocto Project and that you can provide with this variable, + see the + "Distro Features" section. @@ -1320,7 +1505,7 @@ Core layer for images cannot be removed DISTRO_VERSION - the version of the distribution. + The version of the distribution. @@ -1356,7 +1541,7 @@ Core layer for images cannot be removed You can set this directory by defining the DL_DIR variable in the - /conf/local.conf file. + conf/local.conf file. This directory is self-maintaining and you should not have to touch it. By default, the directory is downloads @@ -1600,7 +1785,7 @@ Core layer for images cannot be removed For a complete list of image features that ships with the Yocto Project, see the - "Images" + "Image Features" section. @@ -1621,7 +1806,7 @@ Core layer for images cannot be removed Sometimes a recipe is required to build the final image but is not needed in the root filesystem. You can use the EXTRA_IMAGEDEPENDS variable to - list these recipes and thus, specify the dependencies. + list these recipes and thus specify the dependencies. A typical example is a required bootloader in a machine configuration. @@ -1651,10 +1836,119 @@ Core layer for images cannot be removed + EXTRA_OESCONS + + + When a recipe inherits the + scons + class, this variable specifies additional configuration + options you want to pass to the + scons command line. + + + + + EXTRA_QMAKEVARS_POST + + + Configuration variables or options you want to pass to + qmake. + Use this variable when the arguments need to be after the + .pro file list on the command line. + + + + This variable is used with recipes that inherit the + qmake_base + class or other classes that inherit + qmake_base. + + + + + EXTRA_QMAKEVARS_PRE + + + Configuration variables or options you want to pass to + qmake. + Use this variable when the arguments need to be before the + .pro file list on the command line. + + + + This variable is used with recipes that inherit the + qmake_base + class or other classes that inherit + qmake_base. + + + + + EXTRA_USERS_PARAMS + + + When a recipe inherits the + extrausers + class, this variable provides image level user and group + operations. + This is a more global method of providing user and group + configuration as compared to using the + useradd + class, which ties user and group configurations to a + specific recipe. + + + + The set list of commands you can configure using the + EXTRA_USERS_PARAMS is shown in the + extrausers class. + These commands map to the normal Unix commands of the same + names: + + # EXTRA_USERS_PARAMS = "\ + # useradd -p '' tester; \ + # groupadd developers; \ + # userdel nobody; \ + # groupdel -g video; \ + # groupmod -g 1020 developers; \ + # usermod -s /bin/sh tester; \ + # " + + + + + F + FEED_DEPLOYDIR_BASE_URI + + + Points to the base URL of the server and location within + the document-root that provides the metadata and + packages required by OPKG to support runtime package + management of IPK packages. + You set this variable in your + local.conf file. + + + + Consider the following example: + + FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir" + + This example assumes you are serving your packages over + HTTP and your databases are located in a directory + named BOARD-dir, which is underneath + your HTTP server's document-root. + In this case, the OpenEmbedded build system generates a set + of configuration files for you in your target that work + with the feed. + + + + FILES @@ -1668,18 +1962,18 @@ Core layer for images cannot be removed files you want included as part of the resulting package. Here is an example: - FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile" + FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile" When specifying paths as part of the FILES variable, it is good practice to use appropriate path variables. - For example, ${sysconfdir} rather than - /etc or ${bindir} rather + For example, use ${sysconfdir} rather than + /etc, or ${bindir} rather than /usr/bin. You can find a list of these variables at the top of the - /meta/conf/bitbake.conf file in the + meta/conf/bitbake.conf file in the Source Directory. @@ -1849,7 +2143,7 @@ Core layer for images cannot be removed is located in the meta/files folder in the Source Directory. If you create your own file permissions setting table, you should place it in your - layer or the distros layer. + layer or the distro's layer. You define the FILESYSTEM_PERMS_TABLES variable in the @@ -1867,6 +2161,22 @@ Core layer for images cannot be removed + FONT_PACKAGES + + + When a recipe inherits the + fontcache + class, this variable identifies packages containing font + files that need to be cached by Fontconfig. + By default, the fontcache class assumes + that fonts are in the recipe's main package + (i.e. ${PN}). + Use this variable if fonts you need are in a package + other than that main package. + + + + FULL_OPTIMIZATION @@ -1875,15 +2185,124 @@ Core layer for images cannot be removed and CFLAGS when compiling an optimized system. This variable defaults to - "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2". + "-O2 -pipe ${DEBUG_FLAGS}". - - - + G + + GROUPADD_PARAM + + + When a recipe inherits the + useradd class, this variable + specifies for a package what parameters should be passed + to the groupadd command + if you wish to add a group to the system when the package + is installed. + + + + Here is an example from the dbus + recipe: + + GROUPADD_PARAM_${PN} = "-r netdev" + + For information on the standard Linux shell command + groupadd, see + . + + + + + GROUPMEMS_PARAM + + + When a recipe inherits the + useradd class, this variable + specifies for a package what parameters should be passed + to the groupmems command + if you wish to modify the members of a group when the + package is installed. + + + + For information on the standard Linux shell command + groupmems, see + . + + + + + GRUB_GFXSERIAL + + + Configures the GNU GRand Unified Bootloader (GRUB) to have + graphics and serial in the boot menu. + Set this variable to "1" in your + local.conf or distribution + configuration file to enable graphics and serial + in the menu. + + + + See the + grub-efi + class for more information on how this variable is used. + + + + + GRUB_OPTS + + + Additional options to add to the GNU GRand Unified + Bootloader (GRUB) configuration. + Use a semi-colon character (;) to + separate multiple options. + + + + The GRUB_OPTS variable is optional. + See the + grub-efi + class for more information on how this variable is used. + + + + + GRUB_TIMEOUT + + + Specifies the timeout before executing the default + LABEL in the GNU GRand Unified + Bootloader (GRUB). + + + + The GRUB_TIMEOUT variable is optional. + See the + grub-efi + class for more information on how this variable is used. + + + + + GTKIMMODULES_PACKAGES + + + For recipes that inherit the + gtk-immodules-cache + class, this variable specifies the packages that contain the + GTK+ input method modules being installed when the modules + are in packages other than the main package. + + + + + H @@ -1926,63 +2345,161 @@ Core layer for images cannot be removed I - IMAGE_BASENAME + ICECC_ENV_EXEC - The base name of image output files. - This variable defaults to the recipe name - (${PN}). + Points to the icecc-create-env script + that you provide. + This variable is used by the + icecc + class. + You set this variable in your + local.conf file. + + + + If you do not point to a script that you provide, the + OpenEmbedded build system uses the default script provided + by the icecc-create-env.bb recipe, + which is a modified version and not the one that comes with + icecc. - IMAGE_CLASSES + ICECC_PATH - A list of classes that all images should inherit. - You typically use this variable to specify the list of - classes that register the different types of images - the OpenEmbedded build system creates. + The location of the icecc binary. + You can set this variable in your + local.conf file. + If your local.conf file does not define + this variable, the + icecc + class attempts to define it by locating + icecc using which. + + + ICECC_USER_CLASS_BL + - The default value for IMAGE_CLASSES is - image_types. - You can set this variable in your - local.conf or in a distribution - configuration file. + Identifies user classes that you do not want the + Icecream distributed compile support to consider. + This variable is used by the + icecc + class. + You set this variable in your + local.conf file. - For more information, see - meta/classes/image_types.bbclass in the - Source Directory. + When you list classes using this variable, you are + "blacklisting" them from distributed compilation across + remote hosts. + Any classes you list will be distributed and compiled + locally. - IMAGE_FEATURES + ICECC_USER_PACKAGE_BL - The primary list of features to include in an image. - Typically, you configure this variable in an image recipe. - Although you can use this variable from your - local.conf file, which is found in the - Build Directory, - best practices dictate that you do not. - - To enable extra features from outside the image recipe, - use the - EXTRA_IMAGE_FEATURES variable. - - For a list of image features that ships with the Yocto - Project, see the - "Images" + Identifies user recipes that you do not want the + Icecream distributed compile support to consider. + This variable is used by the + icecc + class. + You set this variable in your + local.conf file. + + + + When you list packages using this variable, you are + "blacklisting" them from distributed compilation across + remote hosts. + Any packages you list will be distributed and compiled + locally. + + + + + ICECC_USER_PACKAGE_WL + + + Identifies user recipes that use an empty + PARALLEL_MAKE + variable that you want to force remote distributed + compilation on using the Icecream distributed compile + support. + This variable is used by the + icecc + class. + You set this variable in your + local.conf file. + + + + + IMAGE_BASENAME + + + The base name of image output files. + This variable defaults to the recipe name + (${PN}). + + + + + IMAGE_CLASSES + + + A list of classes that all images should inherit. + You typically use this variable to specify the list of + classes that register the different types of images + the OpenEmbedded build system creates. + + + + The default value for IMAGE_CLASSES is + image_types. + You can set this variable in your + local.conf or in a distribution + configuration file. + + + + For more information, see + meta/classes/image_types.bbclass in the + Source Directory. + + + + + IMAGE_FEATURES + + + The primary list of features to include in an image. + Typically, you configure this variable in an image recipe. + Although you can use this variable from your + local.conf file, which is found in the + Build Directory, + best practices dictate that you do not. + + To enable extra features from outside the image recipe, + use the + EXTRA_IMAGE_FEATURES variable. + + For a list of image features that ships with the Yocto + Project, see the + "Image Features" section. - For example that shows how to customize your image by + For an example that shows how to customize your image by using this variable, see the "Customizing Images Using Custom IMAGE_FEATURES and EXTRA_IMAGE_FEATURES" section in the Yocto Project Development Manual. @@ -1993,12 +2510,35 @@ Core layer for images cannot be removed IMAGE_FSTYPES - Specifies the formats of the root filesystem created by - the OpenEmbedded build system. - Available formats are a subset of the - supported images listed in + Specifies the formats the OpenEmbedded build system uses + during the build when creating the root filesystem. + For example, setting IMAGE_FSTYPES + as follows causes the build system to create root + filesystems using two formats: .ext3 + and .tar.bz2: + + IMAGE_FSTYPES = "ext3 tar.bz2" + + For the complete list of supported image formats from which + you can choose, see IMAGE_TYPES. + + + If you add "live" to IMAGE_FSTYPES + inside an image recipe, be sure that you do so prior to the + "inherit image" line of the recipe or the live image will + not build. + + + + Due to the way this variable is processed, it is not + possible to update its contents using + _append or + _prepend. To add one or more + additional options to this variable the + += operator must be used. + @@ -2028,8 +2568,8 @@ Core layer for images cannot be removed to a default value using the ?= operator, using a += operation against IMAGE_INSTALL will result in unexpected behavior when used in - /conf/local.conf. - Furthermore, the same operation from with an image recipe may or may not + conf/local.conf. + Furthermore, the same operation from within an image recipe may or may not succeed depending on the specific situation. In both these cases, the behavior is contrary to how most users expect the += operator to work. @@ -2041,7 +2581,7 @@ Core layer for images cannot be removed IMAGE_INSTALL_append = " package-name" Be sure to include the space between the quotation character and the start of the - package name. + package name or names. @@ -2127,9 +2667,52 @@ Core layer for images cannot be removed Alternatively, you can ensure a specific amount of free disk space is added - to the image by using + to the image by using the IMAGE_ROOTFS_EXTRA_SPACE - the variable. + variable. + + + + + IMAGE_PKGTYPE + + + Defines the package type (DEB, RPM, IPK, or TAR) used + by the OpenEmbedded build system. + The variable is defined appropriately by the + package_deb, + package_rpm, + package_ipk, + or + package_tar + class. + + + + The + package_sdk_base + and + image + classes use the IMAGE_PKGTYPE for + packaging up images and SDKs. + + + + You should not set the IMAGE_PKGTYPE + manually. + Rather, the variable is set indirectly through the + appropriate + package_* + class using the + PACKAGE_CLASSES + variable. + The OpenEmbedded build system uses the first package type + (e.g. DEB, RPM, or IPK) that appears with the variable + + Files using the .tar format are + never used as a substitute packaging format for DEB, + RPM, and IPK formatted files for your image or SDK. + @@ -2182,6 +2765,14 @@ Core layer for images cannot be removed IMAGE_ROOTFS_EXTRA_SPACE = "5242880" + + + For example, the Yocto Project Build Appliance specifically requests 40 Gbytes + of extra space with the line: + + IMAGE_ROOTFS_EXTRA_SPACE = "41943040" + + @@ -2383,6 +2974,25 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" + INHERIT_DISTRO + + + Lists classes that will be inherited at the + distribution level. + It is unlikely that you want to edit this variable. + + + + The default value of the variable is set as follows in the + meta/conf/distro/defaultsetup.conf + file: + + INHERIT_DISTRO ?= "debian devshell sstate license" + + + + + INITRAMFS_FSTYPES @@ -2395,14 +3005,31 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" + INITRD + + + Indicates a filesystem image to use as an initial RAM + disk (initrd). + + + + The INITRD variable is an optional + variable used with the + buildimg + class. + + + + INITSCRIPT_NAME - The filename of the initscript as installed to ${etcdir}/init.d. + The filename of the initialization script as installed to + ${sysconfdir}/init.d. This variable is used in recipes when using update-rc.d.bbclass. - The variable is Mandatory. + The variable is mandatory. @@ -2832,6 +3459,20 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" L + LABELS + + + Provides a list of targets for automatic configuration. + + + + See the + grub-efi + class for more information on how this variable is used. + + + + LAYERDEPENDS Lists the layers that this recipe depends upon, separated by spaces. @@ -2870,6 +3511,23 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" + LEAD_SONAME + + + Specifies the lead (or primary) compiled library file + (.so) that the + debian + class applies its naming policy to given a recipe that + packages multiple libraries. + + + + This variable works in conjunction with the + debian class. + + + + LIC_FILES_CHKSUM Checksums of the license text in the recipe source code. @@ -3081,11 +3739,12 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" MACHINE ?= "qemux86" MACHINE ?= "qemux86-64" MACHINE ?= "genericx86" + MACHINE ?= "genericx86-64" MACHINE ?= "beagleboard" MACHINE ?= "mpc8315e-rdb" MACHINE ?= "routerstationpro" - The last four are Yocto Project reference hardware boards, which + The last five are Yocto Project reference hardware boards, which are provided in the meta-yocto-bsp layer. Adding additional Board Support Package (BSP) layers to your configuration adds new possible settings for @@ -3255,20 +3914,23 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" MACHINE_FEATURES - Specifies the list of hardware features the - MACHINE supports. - For example, including the "bluetooth" feature causes the - bluez bluetooth daemon to be built and - added to the image. - It also causes the connman recipe - to look at MACHINE_FEATURES and when it - finds "bluetooth" there it enables the bluetooth - support in ConnMan. + + Specifies the list of hardware features the + MACHINE is capable + of supporting. + For related information on enabling features, see the + DISTRO_FEATURES, + COMBINED_FEATURES, + and + IMAGE_FEATURES + variables. - For a list of features supported by the Yocto Project as shipped, - see the "Machine" section. + For a list of hardware features supported by the Yocto + Project as shipped, see the + "Machine Features" + section. @@ -3464,7 +4126,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" Some recommended packages might be required for certain system functionality, such as kernel modules. - It is up to you to add packages with + It is up to you to add packages with the IMAGE_INSTALL variable. @@ -3485,6 +4147,35 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" + + NOHDD + + + Causes the OpenEmbedded build system to skip building the + .hddimg image. + The NOHDD variable is used with the + buildimg + class. + Set the variable to "1" to prevent the + .hddimg image from being built. + + + + + NOISO + + + Causes the OpenEmbedded build system to skip building the + ISO image. + The NOISO variable is used with the + buildimg + class. + Set the variable to "1" to prevent the ISO image from + being built. + + + + O @@ -3643,26 +4334,56 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" Enables easily adding packages to PACKAGES before ${PN} - so that the packages can pick up files that would normally be + so that those added packages can pick up files that would normally be included in the default package. PACKAGE_CLASSES - This variable, which is set in the local.conf configuration - file found in the conf folder of the - Source Directory, - specifies the package manager to use when packaging data. - You can provide one or more arguments for the variable with the first - argument being the package manager used to create images: + + This variable, which is set in the + local.conf configuration file found in + the conf folder of the + Build Directory, + specifies the package manager the OpenEmbedded build system + uses when packaging data. + + + + You can provide one or more of the following arguments for + the variable: - PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" + PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk package_tar" - For information on build performance effects as a result of the - package manager use, see - Packaging - package*.bbclass - in this manual. + The build system uses only the first argument in the list + as the package manager when creating your image or SDK. + However, packages will be created using any additional + packaging classes you specify. + For example, if you use the following in your + local.conf file: + + PACKAGE_CLASSES ?= "package_ipk package_tar" + + The OpenEmbedded build system uses the IPK package manager + to create your image or SDK as well as generating + TAR packages. + + + + You cannot specify the + package_tar + class first in the list. + Files using the .tar format cannot + be used as a substitute packaging format + for DEB, RPM, and IPK formatted files for your image or SDK. + + + + For information on packaging and build performance effects + as a result of the package manager in use, see the + "package.bbclass" + section. @@ -3861,7 +4582,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" PACKAGECONFIG="f4 f5" - Or, you can just amended the variable: + Or, you can just append the variable: PACKAGECONFIG_append = " f4" @@ -3875,7 +4596,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" PACKAGECONFIG_pn-<recipename>="f4 f5" - Or, you can just amended the variable: + Or, you can just amend the variable: PACKAGECONFIG_append_pn-<recipename> = " f4" @@ -3971,15 +4692,6 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" - - - -PARALLEL_MAKEINST with the description ". - - - - - PATCHRESOLVE @@ -4053,6 +4765,23 @@ PARALLEL_MAKEINST with the description ". + PIXBUF_PACKAGES + + + When a recipe inherits the + pixbufcache + class, this variable identifies packages that contain + the pixbuf loaders used with + gdk-pixbuf. + By default, the pixbufcache class + assumes that the loaders are in the recipe's main package + (i.e. ${PN}). + Use this variable if the loaders you need are in a package + other than that main package. + + + + PKGD @@ -4076,6 +4805,11 @@ PARALLEL_MAKEINST with the description ". do_packagedata task packages data for each recipe and installs it into this temporary, shared area. + This directory defaults to the following: + + ${STAGING_DIR_HOST}/pkgdata + + Do not change this default. @@ -4144,6 +4878,30 @@ PARALLEL_MAKEINST with the description ". + PNBLACKLIST + + + Lists recipes you do not want the OpenEmbedded build system + to build. + This variable works in conjunction with the + blacklist + class, which the recipe must inherit globally. + + + + To prevent a recipe from being built, inherit the class + globally and use the variable in your + local.conf file. + Here is an example that prevents + myrecipe from being built: + + INHERIT += "blacklist" + PNBLACKLIST[myrecipe] = "Not supported by our organization." + + + + + PR The revision of the recipe. @@ -4161,9 +4919,11 @@ PARALLEL_MAKEINST with the description ". provided item, and you should set it to the PN of the recipe to which you want to give precedence. - Here is an example: + Some examples: + PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86" + PREFERRED_PROVIDER_virtual/libgl ?= "mesa" @@ -4176,7 +4936,7 @@ PARALLEL_MAKEINST with the description ". variable determines which recipe should be given preference. You must always suffix the variable with the PN - you want to select, and you should set to the + you want to select, and you should set the PV accordingly for precedence. You can use the "%" character as a @@ -4185,8 +4945,8 @@ PARALLEL_MAKEINST with the description ". numbers that could potentially change. Here are two examples: - PREFERRED_VERSION_python = "2.6.6" - PREFERRED_VERSION_linux-yocto = "3.0+git%" + PREFERRED_VERSION_python = "2.7.3" + PREFERRED_VERSION_linux-yocto = "3.10%" @@ -4244,7 +5004,7 @@ PARALLEL_MAKEINST with the description ". dynamically increment. This increment minimizes the impact of layer ordering. In order to ensure multiple .bbappend files can co-exist, - PRINC should be self referencing. + PRINC should be self-referencing. This variable defaults to 0. Following is an example that increments PR by two: @@ -4275,6 +5035,32 @@ PARALLEL_MAKEINST with the description ". + PRSERV_HOST + + + The network based + PR + service host and port. + + + + The conf/local.conf.sample.extended + configuration file in the + Source Directory + shows how the PRSERV_HOST variable is + set: + + PRSERV_HOST = "localhost:0" + + You must set the variable if you want to automatically + start a local + PR service. + You can set PRSERV_HOST to other + values to use a remote PR service. + + + + PV The version of the recipe. @@ -4291,8 +5077,30 @@ PARALLEL_MAKEINST with the description ". - - + Q + + QMAKE_PROFILES + + + Specifies your own subset of .pro + files to be built for use with + qmake. + If you do not set this variable, all + .pro files in the directory pointed to + by S + will be built by default. + + + + This variable is used with recipes that inherit the + qmake_base + class or other classes that inherit + qmake_base. + + + + + R @@ -4471,6 +5279,24 @@ PARALLEL_MAKEINST with the description ". + REQUIRED_DISTRO_FEATURES + + + When a recipe inherits the + distro_features_check class, this + variable identifies distribution features that must + exist in the current configuration in order for the + OpenEmbedded build system to build the recipe. + In other words, if the + REQUIRED_DISTRO_FEATURES variable + lists a feature that does not appear in + DISTRO_FEATURES within the + current configuration, an error occurs and the + build stops. + + + + RM_OLD_IMAGE @@ -4495,12 +5321,28 @@ PARALLEL_MAKEINST with the description ". With rm_work enabled, this variable specifies a list of recipes whose work directories should not be removed. - See the "Removing Work Files During the Build - rm_work.bbclass" + See the "rm_work.bbclass" section for more details. + ROOTFS + + + Indicates a filesystem image to include as the root + filesystem. + + + + The ROOTFS variable is an optional + variable used with the + buildimg + class. + + + + ROOTFS_POSTPROCESS_COMMAND @@ -4703,7 +5545,7 @@ PARALLEL_MAKEINST with the description ". The location in the Build Directory where unpacked recipe source code resides. - This location is within the working directory + This location is within the work directory (WORKDIR), which is not static. The unpacked source location depends on the recipe name @@ -4712,17 +5554,17 @@ PARALLEL_MAKEINST with the description ". (PV) as follows: - ${WORKDIR}/${PN}-${PV} + ${WORKDIR}/${PN}-${PV} As an example, assume a Source Directory top-level folder named poky and a default Build Directory at poky/build. - In this case, the working directory the build system uses + In this case, the work directory the build system uses to keep the unpacked recipe for db is the following: - ~/poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19 + poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19 @@ -4760,6 +5602,43 @@ PARALLEL_MAKEINST with the description ". + SDK_DEPLOY + + + The directory set up and used by the + populate_sdk_base + to which the SDK is deployed. + The populate_sdk_base class defines + SDK_DEPLOY as follows: + + SDK_DEPLOY = "${TMPDIR}/deploy/sdk" + + + + + + SDK_DIR + + + The parent directory used by the OpenEmbedded build system + when creating SDK output. + The + populate_sdk_base + class defines the variable as follows: + + SDK_DIR = "${WORKDIR}/sdk" + + + The SDK_DIR directory is a + temporary directory as it is part of + WORKDIR. + The final output directory is + SDK_DEPLOY. + + + + + SDK_NAME @@ -4779,6 +5658,30 @@ PARALLEL_MAKEINST with the description ". + SDK_OUTPUT + + + The location used by the OpenEmbedded build system when + creating SDK output. + The + populate_sdk_base + class defines the variable as follows: + + SDK_OUTPUT = "${SDK_DIR}/image" + + + The SDK_OUTPUT directory is a + temporary directory as it is part of + WORKDIR by way of + SDK_DIR. + The final output directory is + SDK_DEPLOY. + + + + + + SDKIMAGE_FEATURES Equivalent to @@ -4904,12 +5807,12 @@ PARALLEL_MAKEINST with the description ". Use of this variable is one mechanism to remove dependencies that affect task signatures and thus force rebuilds when a recipe changes. - + Caution If you add an inappropriate dependency for a recipe relationship, the software might break during runtime if the interface of the second recipe was changed after the first recipe had been built. - + @@ -4924,12 +5827,12 @@ PARALLEL_MAKEINST with the description ". Use of this variable is one way to remove dependencies from one recipe on another that affect task signatures and thus force rebuilds when the recipe changes. - + Caution If you add an inappropriate variable to this list, the software might break at runtime if the interface of the recipe was changed after the other had been built. - + @@ -5006,6 +5909,33 @@ PARALLEL_MAKEINST with the description ". + SOURCE_MIRROR_URL + + + Defines your own + PREMIRRORS + from which to first fetch source before attempting to fetch + from the upstream specified in + SRC_URI. + + + + To use this variable, you must globally inherit the + own-mirrors + class and then provide the URL to your mirrors. + Here is an example: + + INHERIT += "own-mirrors" + SOURCE_MIRROR_URL = "http://example.com/my-source-mirror" + + + You can specify only a single URL in + SOURCE_MIRROR_URL. + + + + + SPECIAL_PKGSUFFIX @@ -5219,7 +6149,7 @@ PARALLEL_MAKEINST with the description ". Source Directory defines PV as follows: - PV = "1.5.0+git${SRCPV}" + PV = "0.12-git${SRCPV}" @@ -5339,6 +6269,92 @@ PARALLEL_MAKEINST with the description ". + SYSLINUX_DEFAULT_CONSOLE + + + Specifies the kernel boot default console. + If you want to use a console other than the default, + set this variable in your recipe as follows where "X" is + the console number you want to use: + + SYSLINUX_DEFAULT_CONSOLE = "console=ttyX" + + + + + The + syslinux + class initially sets this variable to null but then checks + for a value later. + + + + + SYSLINUX_OPTS + + + Lists additional options to add to the syslinux file. + You need to set this variable in your recipe. + If you want to list multiple options, separate the options + with a semicolon character (;). + + + + The + syslinux + class uses this variable to create a set of options. + + + + + SYSLINUX_SERIAL + + + Specifies the alternate serial port or turns it off. + To turn off serial, set this variable to an empty string + in your recipe. + The variable's default value is set in the + syslinux + as follows: + + SYSLINUX_SERIAL ?= "0 115200" + + The class checks for and uses the variable as needed. + + + + SYSLINUX_SPLASH + + + An .LSS file used as the background + for the VGA boot menu when you are using the boot menu. + You need to set this variable in your recipe. + + + + The + syslinux + class checks for this variable and if found, the + OpenEmbedded build system installs the splash screen. + + + + + SYSLINUX_SERIAL_TTY + + + Specifies the alternate console=tty... kernel boot argument. + The variable's default value is set in the + syslinux + as follows: + + SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200" + + The class checks for and uses the variable as needed. + + + + SYSROOT_PREPROCESS_FUNCS @@ -5351,6 +6367,73 @@ PARALLEL_MAKEINST with the description ". + SYSTEMD_AUTO_ENABLE + + + For recipes that inherit the + systemd + class, this variable specifies whether the service you have + specified in + SYSTEMD_SERVICE + should be started automatically or not. + By default, the service is enabled to automatically start + at boot time. + The default setting is in the + systemd + class as follows: + + SYSTEMD_AUTO_ENABLE ??= "enable" + + You can disable the service by setting the variable to + "disable." + + + + + SYSTEMD_PACKAGES + + + For recipes that inherit the + systemd + class, this variable locates the systemd unit files when + they are not found in the main recipe's package. + By default, the + SYSTEMD_PACKAGES variable is set + such that the systemd unit files are assumed to reside in + the recipes main package: + + SYSTEMD_PACKAGES ?= "${PN}" + + If these unit files are not in this recipe's main + package, you need to use + SYSTEMD_PACKAGES to list the package + or packages in which the build system can find the systemd + unit files. + + + + + SYSTEMD_SERVICE + + + For recipes that inherit the + systemd + class, this variable specifies the systemd service name for + a package. + + + + When you specify this file in your recipe, use a package + name override to indicate the package to which the value + applies. + Here is an example from the connman recipe: + + SYSTEMD_SERVICE_${PN} = "connman.service" + + + + + T @@ -5706,6 +6789,45 @@ PARALLEL_MAKEINST with the description ". U + UBOOT_CONFIG + + + Configures the + UBOOT_MACHINE + and can also define + IMAGE_FSTYPES + for individual cases. + + + + Following is an example from the + meta-fsl-arm layer. + + UBOOT_CONFIG ??= "sd" + UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard" + UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config" + UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs" + UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config" + + In this example, "sd" is selected as the configuration + of the possible four for the + UBOOT_MACHINE. + The "sd" configuration defines "mx6qsabreauto_config" + as the value for UBOOT_MACHINE, while + the "sdcard" specifies the + IMAGE_FSTYPES to use for the U-boot + image. + + + + For more information on how the + UBOOT_CONFIG is handled, see the + uboot-config + class. + + + + UBOOT_ENTRYPOINT @@ -5730,6 +6852,22 @@ PARALLEL_MAKEINST with the description ". + UBOOT_LOCALVERSION + + + Appends a string to the name of the local version of the + U-Boot image. + For example, assuming the version of the U-Boot image + built was "2013.10, the full version string reported by + U-Boot would be "2013.10-yocto" given the following + statement: + + UBOOT_LOCALVERSION = "-yocto" + + + + + UBOOT_MACHINE @@ -5744,6 +6882,31 @@ PARALLEL_MAKEINST with the description ". + UBOOT_MAKE_TARGET + + + Specifies the target called in the + Makefile. + The default target is "all". + + + + + UBOOT_SUFFIX + + + Points to the generated U-Boot extension. + For example, u-boot.sb has a + .sb extension. + + + + The default U-Boot extension is + .bin + + + + UBOOT_TARGET @@ -5781,6 +6944,63 @@ PARALLEL_MAKEINST with the description ". + USERADD_PACKAGES + + + When a recipe inherits the + useradd class, this variable + specifies the individual packages within the recipe that + require users and/or groups to be added. + + + + You must set this variable if the recipe inherits the + class. + For example, the following enables adding a user for the + main package in a recipe: + + USERADD_PACKAGES = "${PN}" + + + If follows that if you are going to use the + USERADD_PACKAGES variable, + you need to set one or more of the + USERADD_PARAM, + GROUPADD_PARAM, + or + GROUPMEMS_PARAM + variables. + + + + + + + USERADD_PARAM + + + When a recipe inherits the + useradd class, this variable + specifies for a package what parameters should be passed + to the useradd command + if you wish to add a user to the system when the package + is installed. + + + + Here is an example from the dbus + recipe: + + USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \ + --no-create-home --shell /bin/false \ + --user-group messagebus" + + For information on the standard Linux shell command + useradd, see + . + + + @@ -5806,7 +7026,7 @@ PARALLEL_MAKEINST with the description ". WORKDIR - The pathname of the working directory in which the OpenEmbedded build system + The pathname of the work directory in which the OpenEmbedded build system builds a recipe. This directory is located within the TMPDIR directory structure and changes @@ -5830,34 +7050,34 @@ PARALLEL_MAKEINST with the description ". For packages that are not dependent on a particular machine, WORKDIR is defined as follows: - ${TMPDIR}/work/${PACKAGE_ARCH}-poky-${TARGET_OS}/${PN}/${PV}-${PR} + ${TMPDIR}/work/${PACKAGE_ARCH}-poky-${TARGET_OS}/${PN}/${PV}-${PR} As an example, assume a Source Directory top-level folder name poky and a default Build Directory at poky/build. - In this case, the working directory the build system uses to build + In this case, the work directory the build system uses to build the v86d package is the following: - ~/poky/build/tmp/work/qemux86-poky-linux/v86d/01.9-r0 + poky/build/tmp/work/qemux86-poky-linux/v86d/01.9-r0 For packages that are dependent on a particular machine, WORKDIR - is defined slightly different: + is defined slightly differently: - ${TMPDIR}/work/${MACHINE}-poky-${TARGET_OS}/${PN}/${PV}-${PR} + ${TMPDIR}/work/${MACHINE}-poky-${TARGET_OS}/${PN}/${PV}-${PR} As an example, again assume a Source Directory top-level folder named poky and a default Build Directory at poky/build. - In this case, the working directory the build system uses to build + In this case, the work directory the build system uses to build the acl recipe, which is being built for a MIPS-based device, is the following: - ~/poky/build/tmp/work/mips-poky-linux/acl/2.2.51-r2 + poky/build/tmp/work/mips-poky-linux/acl/2.2.51-r2 diff --git a/documentation/ref-manual/technical-details.xml b/documentation/ref-manual/technical-details.xml index be9c38709ae..51b9148e3e8 100644 --- a/documentation/ref-manual/technical-details.xml +++ b/documentation/ref-manual/technical-details.xml @@ -60,9 +60,10 @@ and is responsible for parsing the Metadata, generating a list of tasks from it, and then executing those tasks. - To see a list of the options BitBake supports, use the following - help command: + To see a list of the options BitBake supports, use either of + the following commands: + $ bitbake -h $ bitbake --help @@ -72,7 +73,7 @@ packagename is the name of the package you want to build (referred to as the "target" in this manual). The target often equates to the first part of a .bb filename. - So, to run the matchbox-desktop_1.2.3.bb file, you + So, to process the matchbox-desktop_1.2.3.bb recipe file, you might type the following: $ bitbake matchbox-desktop @@ -111,14 +112,15 @@ The .bb files are usually referred to as "recipes." In general, a recipe contains information about a single piece of software. - The information includes the location from which to download the source patches - (if any are needed), which special configuration options to apply, + This information includes the location from which to download the + unaltered source, any source patches to be applied to that source + (if needed), which special configuration options to apply, how to compile the source files, and how to package the compiled output. - The term "package" can also be used to describe recipes. - However, since the same word is used for the packaged output from the OpenEmbedded + The term "package" is sometimes used to refer to recipes. However, + since the word "package" is used for the packaged output from the OpenEmbedded build system (i.e. .ipk or .deb files), this document avoids using the term "package" when referring to recipes. @@ -162,7 +164,7 @@ cross-development toolchains. This section provides some technical background information on how cross-development toolchains are created and used. - For more information on these toolchain, you can also see the + For more information on toolchains, you can also see the the Yocto Project Application Developer's Guide. @@ -347,7 +349,7 @@ As mentioned in the previous paragraph, building from scratch ensures that everything is current and starts from a known state. However, building from scratch also takes much longer as it generally means - rebuilding things that do not necessarily need rebuilt. + rebuilding things that do not necessarily need to be rebuilt. @@ -355,10 +357,11 @@ The implementation of the shared state code answers the following questions that were fundamental roadblocks within the OpenEmbedded incremental build support system: - What pieces of the system have changed and what pieces have not changed? - How are changed pieces of software removed and replaced? - How are pre-built components that do not need to be rebuilt from scratch - used when they are available? + What pieces of the system have changed and what pieces have + not changed? + How are changed pieces of software removed and replaced? + How are pre-built components that do not need to be rebuilt from scratch + used when they are available? @@ -397,16 +400,16 @@ When determining what parts of the system need to be built, BitBake - uses a per-task basis and does not use a per-recipe basis. + works on a per-task basis rather than a per-recipe basis. You might wonder why using a per-task basis is preferred over a per-recipe basis. To help explain, consider having the IPK packaging backend enabled and then switching to DEB. In this case, do_install and do_package - output are still valid. + outputs are still valid. However, with a per-recipe approach, the build would not include the .deb files. Consequently, you would have to invalidate the whole build and rerun it. - Rerunning everything is not the best situation. - Also in this case, the core must be "taught" much about specific tasks. + Rerunning everything is not the best solution. + Also, in this case, the core must be "taught" much about specific tasks. This methodology does not scale well and does not allow users to easily add new tasks in layers or as external recipes without touching the packaged-staging core. @@ -431,11 +434,11 @@ the checksum. First, there is the actual specific build path of a given task - the WORKDIR. - It does not matter if the working directory changes because it should not + It does not matter if the work directory changes because it should not affect the output for target packages. Also, the build process has the objective of making native or cross packages relocatable. The checksum therefore needs to exclude WORKDIR. - The simplistic approach for excluding the working directory is to set + The simplistic approach for excluding the work directory is to set WORKDIR to some fixed value and create the checksum for the "run" script. @@ -512,17 +515,18 @@ dependent task hashes can be influenced. Within the BitBake configuration file, we can give BitBake some extra information to help it construct the basehash. - The following statements effectively result in a list of global variable + The following statement effectively results in a list of global variable dependency excludes - variables never included in any checksum: - BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH" - BB_HASHBASE_WHITELIST += "DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS" - BB_HASHBASE_WHITELIST += "FILE_DIRNAME HOME LOGNAME SHELL TERM USER" - BB_HASHBASE_WHITELIST += "FILESPATH USERNAME STAGING_DIR_HOST STAGING_DIR_TARGET" + BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \ + SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \ + USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \ + PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \ + CCACHE_DIR EXTERNAL_TOOLCHAIN CCACHE CCACHE_DISABLE LICENSE_PATH SDKPKGSUFFIX" - The previous example actually excludes + The previous example excludes WORKDIR - since it is actually constructed as a path within + since that variable is actually constructed as a path within TMPDIR, which is on the whitelist. @@ -541,7 +545,7 @@ OE-Core uses the "OEBasicHash" signature handler by default through this setting in the bitbake.conf file: - BB_SIGNATURE_HANDLER ?= "OEBasicHash" + BB_SIGNATURE_HANDLER ?= "OEBasicHash" The "OEBasicHash" BB_SIGNATURE_HANDLER is the same as the "OEBasic" version but adds the task hash to the stamp files. @@ -550,7 +554,7 @@ change that changes the task hash, automatically causing the task to be run again. This removes the need to bump PR - values and changes to Metadata automatically ripple across the build. + values, and changes to Metadata automatically ripple across the build. @@ -558,10 +562,10 @@ make some dependency and hash information available to the build. This information includes: - BB_BASEHASH_task-<taskname> - the base hashes for each task in the recipe - BB_BASEHASH_<filename:taskname> - the base hashes for each dependent task - BBHASHDEPS_<filename:taskname> - The task dependencies for each task - BB_TASKHASH - the hash of the currently running task + BB_BASEHASH_task-<taskname> - the base hashes for each task in the recipe + BB_BASEHASH_<filename:taskname> - the base hashes for each dependent task + BBHASHDEPS_<filename:taskname> - The task dependencies for each task + BB_TASKHASH - the hash of the currently running task
@@ -571,7 +575,7 @@ Checksums and dependencies, as discussed in the previous section, solve half the - problem. + problem of supporting a shared state. The other part of the problem is being able to use checksum information during the build and being able to reuse or rebuild specific components. @@ -581,7 +585,7 @@ is a relatively generic implementation of how to "capture" a snapshot of a given task. The idea is that the build process does not care about the source of a task's output. Output could be freshly built or it could be downloaded and unpacked from - somewhere - the build process does not need to worry about its source. + somewhere - the build process does not need to worry about its origin. @@ -598,7 +602,7 @@ sstate.bbclass. From a user's perspective, adding shared state wrapping to a task is as simple as this do_deploy example taken from - do_deploy.bbclass: + deploy.bbclass: DEPLOYDIR = "${WORKDIR}/deploy-${PN}" SSTATETASKS += "do_deploy" @@ -610,8 +614,9 @@ sstate_setscene(d) } addtask do_deploy_setscene + do_deploy[dirs] = "${DEPLOYDIR} ${B}" - In the example, we add some extra flags to the task, a name field ("deploy"), an + In this example, we add some extra flags to the task, a name field ("deploy"), an input directory where the task sends data, and the output directory where the data from the task should eventually be copied. We also add a _setscene variant of the task and add the task @@ -730,43 +735,61 @@ Invalidating Shared State - The shared state code uses checksums and shared state + The OpenEmbedded build system uses checksums and shared state cache to avoid unnecessarily rebuilding tasks. + Collectively, this scheme is known as "shared state code." + + + As with all schemes, this one has some drawbacks. - It is possible that you could make implicit changes that are not factored - into the checksum calculation, but do affect a task's output. - A good example is perhaps when a tool changes its output. - Assume that the output of rpmdeps needed to change. + It is possible that you could make implicit changes to your + code that the checksum calculations do not take into + account (i.e. implicit changes). + These implicit changes affect a task's output but do not trigger + the shared state code into rebuilding a recipe. + Consider an example during which a tool changes its output. + Assume that the output of rpmdeps changes. The result of the change should be that all the - package, package_write_rpm, - and package_deploy-rpm shared state cache - items would become invalid. - But, because this is a change that is external to the code and therefore implicit, - the associated shared state cache items do not become invalidated. - In this case, the build process uses the cached items rather than running the - task again. + package and + package_write_rpm shared state cache + items become invalid. + However, because the change to the output is + external to the code and therefore implicit, + the associated shared state cache items do not become + invalidated. + In this case, the build process uses the cached items rather + than running the task again. Obviously, these types of implicit changes can cause problems. - To avoid these problems during the build, you need to understand the effects of any - change you make. - Note that any changes you make directly to a function automatically are factored into - the checksum calculation and thus, will invalidate the associated area of sstate cache. - You need to be aware of any implicit changes that are not obvious changes to the - code and could affect the output of a given task. - Once you are aware of such changes, you can take steps to invalidate the cache - and force the tasks to run. - The steps to take are as simple as changing function's comments in the source code. - For example, to invalidate package shared state files, change the comment statements - of do_package or the comments of one of the functions it calls. - The change is purely cosmetic, but it causes the checksum to be recalculated and - forces the task to be run again. + To avoid these problems during the build, you need to + understand the effects of any changes you make. + Realize that changes you make directly to a function + are automatically factored into the checksum calculation. + Thus, these explicit changes invalidate the associated area of + sstate cache. + However, you need to be aware of any implicit changes that + are not obvious changes to the code and could affect the output + of a given task. + + + + When you identify an implicit change, you can easily take steps + to invalidate the cache and force the tasks to run. + The steps you can take are as simple as changing a function's + comments in the source code. + For example, to invalidate package shared state files, change + the comment statements of do_package or + the comments of one of the functions it calls. + Even though the change is purely cosmetic, it causes the + checksum to be recalculated and forces the OpenEmbedded build + system to run the task again. - For an example of a commit that makes a cosmetic change to invalidate - a shared state, see this + For an example of a commit that makes a cosmetic change to + invalidate shared state, see this commit.
@@ -868,7 +891,7 @@ Wayland - is a computer display server protocol that when implemented + is a computer display server protocol that provides a method for compositing window managers to communicate directly with applications and video hardware and expects them to communicate with input hardware using other libraries. @@ -879,7 +902,7 @@ The Yocto Project provides the Wayland protocol libraries and the - reference Weston compositor as part of it release. + reference Weston compositor as part of its release. This section describes what you need to do to implement Wayland and use the compositor when building an image for a supporting target. @@ -974,7 +997,7 @@ Alternatively, you can run Weston through the command-line interpretor (CLI), which is better suited for development work. - To run Weston under the CLI you need to do the following after + To run Weston under the CLI, you need to do the following after your image is built: Run these commands to export @@ -1126,7 +1149,7 @@ recipe-by-recipe basis through the LICENSE_FLAGS variable definition in the affected recipe. For instance, the - $HOME/poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly + poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly recipe contains the following statement: LICENSE_FLAGS = "commercial" @@ -1142,7 +1165,7 @@ LICENSE_FLAGS_WHITELIST variable, which is a variable typically defined in your local.conf file. For example, to enable - the $HOME/poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly + the poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly package, you could add either the string "commercial_gst-plugins-ugly" or the more general string "commercial" to LICENSE_FLAGS_WHITELIST. @@ -1163,7 +1186,7 @@ As a convenience, you do not need to specify the complete license string in the whitelist for every package. - you can use an abbreviated form, which consists + You can use an abbreviated form, which consists of just the first portion or portions of the license string before the initial underscore character or characters. A partial string will match @@ -1185,10 +1208,10 @@ License flag matching allows you to control what recipes the OpenEmbedded build system includes in the build. Fundamentally, the build system attempts to match - LICENSE_FLAG strings found in + LICENSE_FLAGS strings found in recipes against LICENSE_FLAGS_WHITELIST strings found in the whitelist. - A match, causes the build system to include a recipe in the + A match causes the build system to include a recipe in the build, while failure to find a match causes the build system to exclude a recipe. @@ -1249,7 +1272,7 @@ This scheme works even if the - LICENSE_FLAG string already + LICENSE_FLAGS string already has _${PN} appended. For example, the build system turns the license flag "commercial_1.2_foo" into "commercial_1.2_foo_foo" and would @@ -1289,7 +1312,7 @@ Other helpful variables related to commercial license handling exist and are defined in the - $HOME/poky/meta/conf/distro/include/default-distrovars.inc file: + poky/meta/conf/distro/include/default-distrovars.inc file: COMMERCIAL_AUDIO_PLUGINS ?= "" COMMERCIAL_VIDEO_PLUGINS ?= "" diff --git a/documentation/ref-manual/usingpoky.xml b/documentation/ref-manual/usingpoky.xml index b00e7bc14ea..eff8480e1a4 100644 --- a/documentation/ref-manual/usingpoky.xml +++ b/documentation/ref-manual/usingpoky.xml @@ -40,7 +40,7 @@ - The build_dir is optional and specifies the directory the + The build_dir argument is optional and specifies the directory the OpenEmbedded build system uses for the build - the Build Directory. If you do not specify a Build Directory, it defaults to a directory @@ -62,7 +62,7 @@ The target is the name of the recipe you want to build. Common targets are the images in meta/recipes-core/images, - /meta/recipes-sato/images, etc. all found in the + meta/recipes-sato/images, etc. all found in the Source Directory. Or, the target can be the name of a recipe for a specific piece of software such as BusyBox. @@ -72,7 +72,7 @@ Building an image without GNU General Public License Version 3 (GPLv3) components - is only supported for minimal and base images. + is supported for only minimal and base images. See the "Images" chapter for more information.
@@ -158,7 +158,7 @@ package_write, and build. The default task is build and any tasks on which it depends build first. - Some tasks exist, such as devshell, that are not part of the + Some tasks, such as devshell, are not part of the default build chain. If you wish to run a task that is not part of the default build chain, you can use the -c option in BitBake. @@ -169,14 +169,15 @@ - If you wish to rerun a task, use the -f force option. - For example, the following sequence forces recompilation after changing files in the - working directory. + If you wish to rerun a task, use the -f force + option. + For example, the following sequence forces recompilation after + changing files in the work directory. $ bitbake matchbox-desktop . . - [make some changes to the source code in the working directory] + [make some changes to the source code in the work directory] . . $ bitbake matchbox-desktop -c compile -f @@ -206,14 +207,19 @@ Dependency Graphs - Sometimes it can be hard to see why BitBake wants to build some other packages before a given - package you have specified. - The bitbake -g targetname command creates the - depends.dot, package-depends.dot, - and task-depends.dot files in the current directory. - These files show the package and task dependencies and are useful for debugging problems. - You can use the bitbake -g -u depexp targetname command to - display the results in a more human-readable form. + Sometimes it can be hard to see why BitBake wants to build + other packages before building a given package you have specified. + The bitbake -g <targetname> command + creates the pn-buildlist, + pn-depends.dot, + package-depends.dot, and + task-depends.dot files in the current + directory. + These files show what will be built and the package and task + dependencies, which are useful for debugging problems. + You can use the + bitbake -g -u depexp <targetname> + command to display the results in a more human-readable form.
@@ -271,12 +277,18 @@
Building with No Dependencies - If you really want to build a specific .bb file, you can use - the command form bitbake -b <somepath/somefile.bb>. - This command form does not check for dependencies so you should use it - only when you know its dependencies already exist. - You can also specify fragments of the filename. - In this case, BitBake checks for a unique match. + To build a specific recipe (.bb file), + you can use the following command form: + + $ bitbake -b <somepath/somerecipe.bb> + + This command form does not check for dependencies. + Consequently, you should use it + only when you know dependencies already exist. + + You can also specify fragments of the filename. + In this case, BitBake checks for a unique match. +
@@ -284,11 +296,16 @@ Variables You can use the -e BitBake option to - display the resulting environment for a configuration - when you do not specify a package or for a specific package when - you do specify the package. - If you want to show the environment resulting from parsing a single - recipe, use the -b recipename form. + display the parsing environment for a configuration. + The following displays the general parsing environment: + + $ bitbake -e + + This next example shows the parsing environment for a specific + recipe: + + $ bitbake -e <recipename> +
@@ -479,11 +496,11 @@ from your conf/local.conf file. However, you should realize that enabling and disabling build history in this manner can change the - do_package task checksums, which if you + do_package task checksums which, if you are using the OEBasicHash signature generator (the default for many current distro configurations including DISTRO = "poky" and - DISTRO = "") and will result in the packaging + DISTRO = "") will result in the packaging tasks being re-run during the subsequent build. diff --git a/documentation/tools/mega-manual.sed b/documentation/tools/mega-manual.sed index c03a31d3dcf..d3142ec60d1 100644 --- a/documentation/tools/mega-manual.sed +++ b/documentation/tools/mega-manual.sed @@ -1,13 +1,13 @@ # Processes ref-manual and yocto-project-qs manual (-- style) -s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/1.5\/[a-z]*-[a-z]*-[a-z]*\/[a-z]*-[a-z]*-[a-z]*.html#/\"link\" href=\"#/g +s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/1.5.1\/[a-z]*-[a-z]*-[a-z]*\/[a-z]*-[a-z]*-[a-z]*.html#/\"link\" href=\"#/g # Processes all other manuals (- style) -s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/1.5\/[a-z]*-[a-z]*\/[a-z]*-[a-z]*.html#/\"link\" href=\"#/g +s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/1.5.1\/[a-z]*-[a-z]*\/[a-z]*-[a-z]*.html#/\"link\" href=\"#/g # Process cases where just an external manual is referenced without an id anchor -s/Yocto Project Quick Start<\/a>/Yocto Project Quick Start/g -s/Yocto Project Development Manual<\/a>/Yocto Project Development Manual/g -s/Yocto Project Application Developer's Guide<\/a>/Yocto Project Application Developer's Guide/g -s/Yocto Project Board Support Package (BSP) Developer's Guide<\/a>/Yocto Project Board Support Package (BSP) Developer's Guide/g -s/Yocto Project Linux Kernel Development Manual<\/a>/Yocto Project Linux Kernel Development Manual/g -s/Yocto Project Reference Manual<\/a>/Yocto Project Reference Manual/g +s/Yocto Project Quick Start<\/a>/Yocto Project Quick Start/g +s/Yocto Project Development Manual<\/a>/Yocto Project Development Manual/g +s/Yocto Project Application Developer's Guide<\/a>/Yocto Project Application Developer's Guide/g +s/Yocto Project Board Support Package (BSP) Developer's Guide<\/a>/Yocto Project Board Support Package (BSP) Developer's Guide/g +s/Yocto Project Linux Kernel Development Manual<\/a>/Yocto Project Linux Kernel Development Manual/g +s/Yocto Project Reference Manual<\/a>/Yocto Project Reference Manual/g diff --git a/documentation/yocto-project-qs/yocto-project-qs.xml b/documentation/yocto-project-qs/yocto-project-qs.xml index 3c50680bf6e..96abe83af53 100644 --- a/documentation/yocto-project-qs/yocto-project-qs.xml +++ b/documentation/yocto-project-qs/yocto-project-qs.xml @@ -17,11 +17,10 @@ the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales as published by Creative Commons. - Due to production processes, there could be differences between the Yocto Project - documentation bundled in the release tarball and the - Yocto Project Quick Start on - the Yocto Project website. - For the latest version of this manual, see the manual on the website. + For the latest version of this manual associated with this + Yocto Project release, see the + Yocto Project Quick Start + from the Yocto Project website. @@ -232,11 +231,6 @@ distributions listed in the "Supported Linux Distributions" section of the Yocto Project Reference Manual. - Refer to - OE and Your Distro and - Required Software - for information for information about dependencies and - requirements. If you encounter problems, please go to Yocto Project Bugzilla and submit a bug. @@ -591,7 +585,7 @@ - poky-eglibc-<host_system>-<image_type>-<arch>-<release_version>.sh + poky-eglibc-<host_system>-<image_type>-<arch>-toolchain-<release_version>.sh Where: <host_system> is a string representing your development system: @@ -620,7 +614,7 @@ development host system and a i586-tuned target architecture based off the SDK for core-image-sato: - poky-eglibc-x86_64-core-image-sato-i586-&DISTRO;.sh + poky-eglibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh @@ -649,7 +643,7 @@ - $ ~/Downloads/poky-eglibc-x86_64-core-image-sato-i586-&DISTRO;.sh + $ ~/Downloads/poky-eglibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh @@ -722,11 +716,6 @@ <arch> is a string representing the target architecture: x86, x86-64, ppc, mips, or arm. - - For the qemu architecture, - ext3 and tar - files start with the "lib32" string. -
diff --git a/meta-luv/COPYING.MIT b/meta-luv/COPYING.MIT new file mode 100644 index 00000000000..89de354795e --- /dev/null +++ b/meta-luv/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/meta-luv/README b/meta-luv/README new file mode 100644 index 00000000000..b640ee9cadf --- /dev/null +++ b/meta-luv/README @@ -0,0 +1,60 @@ +This README file contains information on the contents of the meta-luv +layer, which is the layer containing all the components necessary to +build the Linux UEFI Validation distribution. + +Please see the corresponding sections below for details. + + +Dependencies +============ + +This layer depends on: + + URI: git://git.openembedded.org/bitbake + branch: master + + URI: git://git.openembedded.org/openembedded-core + layers: meta + branch: master + + URI: git://git.yoctoproject.org/poky + branch: master + + +Patches +======= + +Please submit any patches against the meta-luv layer to the luv mailing +list (luv@lists.01.org) and cc: the maintainer: + +Maintainer: Matt Fleming + + +Table of Contents +================= + + I. Adding the meta-luv layer to your build + + +I. Adding the meta-luv layer to your build +================================================= + +In order to use this layer, you need to make the build system aware of +it. + +Assuming the meta-luv layer exists at the top-level of your +yocto build tree, you can add it to the build system by adding the +location of the meta-luv layer to bblayers.conf, along with any +other layers needed. e.g.: + + BBLAYERS ?= " \ + /path/to/yocto/meta \ + /path/to/yocto/meta-yocto \ + /path/to/yocto/meta-yocto-bsp \ + /path/to/yocto/meta-luv \ + " + +Then it is necessary to specify the luv distribution in local.conf. +e.g.: + + DISTRO = "luv" diff --git a/meta-luv/classes/luv-efi.bbclass b/meta-luv/classes/luv-efi.bbclass new file mode 100644 index 00000000000..02a6751987a --- /dev/null +++ b/meta-luv/classes/luv-efi.bbclass @@ -0,0 +1,87 @@ +# +# Copyright (C) 2014 Intel Corporation. +# +# This is entirely specific to the Linux UEFI Validation (luv) project. +# We install a couple of boot loaders and a splash image. +# + +do_bootimg[depends] += "grub-efi-${TRANSLATED_TARGET_ARCH}-native:do_deploy" + +EFI_LOADER_IMAGE = "${@base_conditional('TARGET_ARCH', 'x86_64', 'bootx64.efi', 'bootia32.efi', d)}" +EFIDIR = "/EFI/BOOT" + +GRUBCFG = "${S}/grub.cfg" + +efi_populate() { + # DEST must be the root of the image so that EFIDIR is not + # nested under a top level directory. + DEST=$1 + + install -d ${DEST}${EFIDIR} + install -d ${DEST}${EFIDIR}/bits + + # Install both the grub2 and BITS loaders + install -m 0644 ${DEPLOY_DIR_IMAGE}/${EFI_LOADER_IMAGE} ${DEST}${EFIDIR} + + cp -r ${DEPLOY_DIR_IMAGE}/bits/boot ${DEST} + install -m 0644 ${DEPLOY_DIR_IMAGE}/bits/efi/boot/${EFI_LOADER_IMAGE} \ + ${DEST}${EFIDIR}/bits/ + + install -m 0644 ${GRUBCFG} ${DEST}${EFIDIR} + + install -m 0644 ${WORKDIR}/${SPLASH_IMAGE} ${DEST}${EFIDIR} +} + +efi_iso_populate() { + iso_dir=$1 + efi_populate $iso_dir + # Build a EFI directory to create efi.img + mkdir -p ${EFIIMGDIR}/${EFIDIR} + cp -r $iso_dir/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR} + cp $iso_dir/vmlinuz ${EFIIMGDIR} + echo "${EFI_LOADER_IMAGE}" > ${EFIIMGDIR}/startup.nsh + if [ -f "$iso_dir/initrd" ] ; then + cp $iso_dir/initrd ${EFIIMGDIR} + fi +} + +efi_hddimg_populate() { + efi_populate $1 +} + +python build_efi_cfg() { + path = d.getVar('GRUBCFG', True) + if not path: + raise bb.build.FuncFailed('Unable to read GRUBCFG') + + try: + cfgfile = file(path, 'w') + except OSError: + raise bb.build.funcFailed('Unable to open %s' % (cfgfile)) + + cfgfile.write('default=bits\n') + cfgfile.write('timeout=0\n') + cfgfile.write('fallback=0\n') + + cfgfile.write('menuentry \'luv\' {\n') + cfgfile.write('linux /vmlinuz') + + append = d.getVar('APPEND', True) + if append: + cfgfile.write('%s' % (append)) + + cfgfile.write('\n') + + cfgfile.write('initrd /initrd\n') + cfgfile.write('}\n') + + loader = d.getVar('EFI_LOADER_IMAGE', True) + if not loader: + raise bb.build.FuncFailed('Unable to find EFI_LOADER_IMAGE') + + cfgfile.write('menuentry \'bits\' {\n') + cfgfile.write('chainloader /EFI/BOOT/bits/%s\n' % loader) + cfgfile.write('}\n') + + cfgfile.close() +} diff --git a/meta-luv/classes/luv-test.bbclass b/meta-luv/classes/luv-test.bbclass new file mode 100644 index 00000000000..dc20978296d --- /dev/null +++ b/meta-luv/classes/luv-test.bbclass @@ -0,0 +1,43 @@ +# Copyright (C) 2014 Intel Corporation +# +# This file will automatically generate and install a test runner +# script for a package. + +LUV_TEST_ARGS = "" +LUV_TEST = "${PN}" + +LUV_TEST_LOG_PARSER = "" + +# The installation directory of test runner scripts and log parsers +RUNNER_PATH = "${sysconfdir}/luv/tests" +PARSER_PATH = "${sysconfdir}/luv/parsers" + +FILES_${PN} += "${RUNNER_PATH}/${PN} ${PARSER_PATH}/${PN}" + +do_install_runner() { + runner_dir="${D}${RUNNER_PATH}" + install -d $runner_dir + + log_dir="${D}${PARSER_PATH}" + install -d $log_dir + + if [ ! -z ${LUV_TEST_LOG_PARSER} ]; then + parser="${PARSER_PATH}/${PN}" + install -m 755 ${WORKDIR}/${LUV_TEST_LOG_PARSER} ${D}${parser} + fi + + cat > ${runner_dir}/${PN} <> ${S}/boot/cfg/init.cfg +} + +do_install() { + install -d ${D}/${bindir} + install -m 0755 ${WORKDIR}/luv-test-bits ${D}/${bindir}/bits +} + +do_deploy() { + + install -d ${DEPLOYDIR}/bits + + python -m compileall ${B}/boot/python + + # Set the mtime to zero in all bytecode files, since GRUB2 (and thus + # the BITS implementation of fstat) doesn't support mtime. + find ${B}/boot/python -name '*.pyc' | while read bytecode ; do + dd if=/dev/zero of=$bytecode bs=4 count=1 seek=1 conv=notrunc + done + + cp -r ${B}/boot/ ${DEPLOYDIR}/bits/ + cp ${WORKDIR}/bits-cfg.txt ${DEPLOYDIR}/bits/boot/ + cp -r ${B}/efi ${DEPLOYDIR}/bits/ +} + + +addtask deploy before do_build after do_compile + +do_populate_sysroot[noexec] = "1" diff --git a/meta-luv/recipes-bsp/bits/bits/0001-only-output-to-log.patch b/meta-luv/recipes-bsp/bits/bits/0001-only-output-to-log.patch new file mode 100644 index 00000000000..46e3e7b22eb --- /dev/null +++ b/meta-luv/recipes-bsp/bits/bits/0001-only-output-to-log.patch @@ -0,0 +1,47 @@ +diff --git a/python/redirect.py b/python/redirect.py +index 6b224a4..98deb26 100644 +--- a/boot/python/redirect.py ++++ b/boot/python/redirect.py +@@ -75,8 +75,10 @@ def redirect(): + _log_header() + _orig_stdout = _sys.stdout + _orig_stderr = _sys.stderr +- _sys.stdout = Tee(_orig_stdout, _log) +- _sys.stderr = Tee(_orig_stderr, _log) ++ #_sys.stdout = Tee(_orig_stdout, _log) ++ #_sys.stderr = Tee(_orig_stderr, _log) ++ _sys.stdout = _log ++ _sys.stderr = _log + + def clear(): + """Clear the log file.""" +@@ -107,8 +109,8 @@ def log(): + global state + saved_state = state + state = LOG_STATE +- with _redirect_stdout(Tee(_orig_stdout, _log)): +- with _redirect_stderr(Tee(_orig_stderr, _log)): ++ with _redirect_stdout(_log): ++ with _redirect_stderr(_log): + yield + state = saved_state + +@@ -119,7 +121,7 @@ def logonly(): + saved_state = state + state = LOGONLY_STATE + with _redirect_stdout(_log): +- with _redirect_stderr(Tee(_orig_stderr, _log)): ++ with _redirect_stderr(_log): + yield + state = saved_state + +@@ -129,7 +131,7 @@ def nolog(): + global state + saved_state = state + state = NOLOG_STATE +- with _redirect_stdout(_orig_stdout): +- with _redirect_stderr(_orig_stderr): ++ with _redirect_stdout(_log): ++ with _redirect_stderr(_log): + yield + state = saved_state diff --git a/meta-luv/recipes-bsp/bits/bits/bits-cfg.txt b/meta-luv/recipes-bsp/bits/bits/bits-cfg.txt new file mode 100644 index 00000000000..38af95a7dad --- /dev/null +++ b/meta-luv/recipes-bsp/bits/bits/bits-cfg.txt @@ -0,0 +1,3 @@ +[bits] +#Enabling auto mode +batch = test acpi smbios diff --git a/meta-luv/recipes-bsp/bits/bits/luv-parser-bits b/meta-luv/recipes-bsp/bits/bits/luv-parser-bits new file mode 100644 index 00000000000..f150038ae1c --- /dev/null +++ b/meta-luv/recipes-bsp/bits/bits/luv-parser-bits @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Parse the output of the BITS tests and write a luv-test-manager +# compatible version to stdout. +# +awk '/\=\=\=/ { + if (test) { + printf "1.0 bits %s RESULT %d %d %d 0\n", test, passes, +fails, skips; + fflush(""); + passes = 0; fails = 0; skips =0; + } + + test=$2 +} + +/^Summary/ { + passes += $2 + fails += $4 + + if (!passes && !fails) + skips += 1 +}' diff --git a/meta-luv/recipes-bsp/bits/bits/luv-test-bits b/meta-luv/recipes-bsp/bits/bits/luv-test-bits new file mode 100644 index 00000000000..57141ca5331 --- /dev/null +++ b/meta-luv/recipes-bsp/bits/bits/luv-test-bits @@ -0,0 +1,15 @@ +#!/bin/sh +# +# Check to see whether the BITS tests were run as part of this boot. +# + +EFI_PATH="/mnt/luv-efi" +bits_log=${EFI_PATH}/boot/bits-log.txt + +if [ ! -e $bits_log ]; then + # Nothing to do, no test results. + exit 0 +fi + +cat $bits_log +#rm $bits_log diff --git a/meta-luv/recipes-bsp/efilinux/efilinux_1.1.bb b/meta-luv/recipes-bsp/efilinux/efilinux_1.1.bb new file mode 100644 index 00000000000..3978500cf4e --- /dev/null +++ b/meta-luv/recipes-bsp/efilinux/efilinux_1.1.bb @@ -0,0 +1,27 @@ +SUMMARY = "A small BSD-licensed reference UEFI OS loader" +SECTION = "bootloaders" + +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://README;md5=6b473c0ed2b77b2aecb3251a67a236e1" + +SRC_URI = "https://www.kernel.org/pub/linux/utils/boot/efilinux/efilinux-${PV}.tar.gz" + +SRC_URI[md5sum] = "07de903ff6c6b2916ecad091f7be9e2a" +SRC_URI[sha256sum] = "fb294a78acfed1fbd48a1f197a53d263049eaf8de40399fbc821d36dca9fd4cb" + +DEPENDS = "gnu-efi" +inherit deploy + +def gnu_efi_arch(d): + import re + tarch = d.getVar("TARGET_ARCH", True) + if re.match("i[3456789]86", tarch): + return "ia32" + return tarch + +EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'LIBDIR=${STAGING_LIBDIR}' 'INCDIR=${STAGING_INCDIR}'" + +do_deploy () { + install ${B}/efilinux.efi ${DEPLOYDIR} +} +addtask deploy before do_build after do_compile diff --git a/meta-luv/recipes-bsp/grub/grub-efi-native_2.00.bbappend b/meta-luv/recipes-bsp/grub/grub-efi-native_2.00.bbappend new file mode 100644 index 00000000000..8d37e64a9e1 --- /dev/null +++ b/meta-luv/recipes-bsp/grub/grub-efi-native_2.00.bbappend @@ -0,0 +1,9 @@ +do_mkimage() { + # Search for the grub.cfg on the local boot media by using the + # built in cfg file provided via this recipe + ./grub-mkimage -c ../cfg -p /EFI/BOOT -d ./grub-core/ \ + -O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE} \ + boot linux ext2 fat serial part_msdos part_gpt \ + normal efi_gop iso9660 search efinet tftp all_video chain \ + gfxmenu jpeg gfxterm +} diff --git a/meta-luv/recipes-core/base-files/base-files/fstab b/meta-luv/recipes-core/base-files/base-files/fstab new file mode 100644 index 00000000000..a701f66c532 --- /dev/null +++ b/meta-luv/recipes-core/base-files/base-files/fstab @@ -0,0 +1,11 @@ +rootfs / auto defaults 1 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts mode=0620,gid=5 0 0 +usbdevfs /proc/bus/usb usbdevfs noauto 0 0 +tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0 +tmpfs /var/volatile tmpfs defaults 0 0 + +# uncomment this if your device has a SD/MMC/Transflash slot +#/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0 + +efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0 diff --git a/meta-luv/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-luv/recipes-core/base-files/base-files_3.0.14.bbappend new file mode 100644 index 00000000000..38207546297 --- /dev/null +++ b/meta-luv/recipes-core/base-files/base-files_3.0.14.bbappend @@ -0,0 +1,3 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://fstab" diff --git a/meta-luv/recipes-core/chipsec/chipsec/0001-helper-linux-Use-CC-instead-of-cc.patch b/meta-luv/recipes-core/chipsec/chipsec/0001-helper-linux-Use-CC-instead-of-cc.patch new file mode 100644 index 00000000000..5da85d05c06 --- /dev/null +++ b/meta-luv/recipes-core/chipsec/chipsec/0001-helper-linux-Use-CC-instead-of-cc.patch @@ -0,0 +1,35 @@ +From f9632b03227ad8d5bd3ce6545ad44f7ea31dccd2 Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Wed, 28 May 2014 14:48:01 +0100 +Subject: [PATCH 1/5] helper/linux: Use $(CC) instead of 'cc' + +In order to compile chipsec for a non-native toolchain we need to use a +level of indirection and reference $(CC) instead of 'cc'. + +By default there's no change, and things should work as before. But now +it's also possible for users to specify CC= on the command line to point +to a non-native compiler. + +Signed-off-by: Matt Fleming +--- + source/tool/chipsec/helper/linux/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source/tool/chipsec/helper/linux/Makefile b/source/tool/chipsec/helper/linux/Makefile +index 2987d02..3a5ed1c 100644 +--- a/source/tool/chipsec/helper/linux/Makefile ++++ b/source/tool/chipsec/helper/linux/Makefile +@@ -1,8 +1,8 @@ + INC=-I/usr/include/python2.7 + + cores: +- cc $(INC) -c -fPIC cores.c -o cores.o +- cc cores.o -shared -o cores.so ++ $(CC) $(INC) -c -fPIC cores.c -o cores.o ++ $(CC) cores.o -shared -o cores.so + + clean: + rm -f *.o *.so +-- +1.9.0 + diff --git a/meta-luv/recipes-core/chipsec/chipsec/0002-helper-linux-Allow-INC-to-be-overidden.patch b/meta-luv/recipes-core/chipsec/chipsec/0002-helper-linux-Allow-INC-to-be-overidden.patch new file mode 100644 index 00000000000..083e0f700e0 --- /dev/null +++ b/meta-luv/recipes-core/chipsec/chipsec/0002-helper-linux-Allow-INC-to-be-overidden.patch @@ -0,0 +1,26 @@ +From eaf6db2d55bb1b404bcf8ad5bbbe8e145195bf6b Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Wed, 28 May 2014 15:08:39 +0100 +Subject: [PATCH 2/5] helper/linux: Allow $INC to be overidden + +When compiling chipsec for a target other than the host on which we're +doing the compiling we need to be able to override $INC. + +Signed-off-by: Matt Fleming +--- + source/tool/chipsec/helper/linux/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/tool/chipsec/helper/linux/Makefile b/source/tool/chipsec/helper/linux/Makefile +index 3a5ed1c..5d925d6 100644 +--- a/source/tool/chipsec/helper/linux/Makefile ++++ b/source/tool/chipsec/helper/linux/Makefile +@@ -1,4 +1,4 @@ +-INC=-I/usr/include/python2.7 ++INC ?= -I/usr/include/python2.7 + + cores: + $(CC) $(INC) -c -fPIC cores.c -o cores.o +-- +1.9.0 + diff --git a/meta-luv/recipes-core/chipsec/chipsec/0003-chipsec_main.py-Remove-absolute-reference-to-python-.patch b/meta-luv/recipes-core/chipsec/chipsec/0003-chipsec_main.py-Remove-absolute-reference-to-python-.patch new file mode 100644 index 00000000000..de9aa34f895 --- /dev/null +++ b/meta-luv/recipes-core/chipsec/chipsec/0003-chipsec_main.py-Remove-absolute-reference-to-python-.patch @@ -0,0 +1,29 @@ +From 443e3b1f958438979d7b5665ec6a0488625819ef Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Mon, 2 Jun 2014 11:18:54 +0100 +Subject: [PATCH 3/5] chipsec_main.py: Remove absolute reference to python + executable + +The canonical way to use shebang for python scripts is to use env(1) +which will automatically find the python interpreter in the user's +$PATH, rather than hard-coding an absolute path that may not exist for +all systems. + +Signed-off-by: Matt Fleming +--- + source/tool/chipsec_main.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/tool/chipsec_main.py b/source/tool/chipsec_main.py +index 184b4b7..3c3581c 100644 +--- a/source/tool/chipsec_main.py ++++ b/source/tool/chipsec_main.py +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/python ++#!/usr/bin/env python + #CHIPSEC: Platform Security Assessment Framework + #Copyright (c) 2010-2014, Intel Corporation + # +-- +1.9.0 + diff --git a/meta-luv/recipes-core/chipsec/chipsec/0005-tool-setup.py-Delete-Windows-drivers-from-data_files.patch b/meta-luv/recipes-core/chipsec/chipsec/0005-tool-setup.py-Delete-Windows-drivers-from-data_files.patch new file mode 100644 index 00000000000..36314481459 --- /dev/null +++ b/meta-luv/recipes-core/chipsec/chipsec/0005-tool-setup.py-Delete-Windows-drivers-from-data_files.patch @@ -0,0 +1,30 @@ +From 5f5b13a803e5092cc03ff59eddeb795ecaf5a6a9 Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Mon, 2 Jun 2014 11:22:01 +0100 +Subject: [PATCH 5/5] tool/setup.py: Delete Windows drivers in data_files + +We obviously don't build those drivers on Linux, so remove them. To fix +this properly would require some means of telling setup.py which +platform we're building for, not which platform we're currently running +on. + +Signed-off-by: Matt Fleming +--- + source/tool/setup.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/source/tool/setup.py b/source/tool/setup.py +index f4087ce..f1e2c47 100644 +--- a/source/tool/setup.py ++++ b/source/tool/setup.py +@@ -74,7 +74,6 @@ setup( + author_email = '', + url = 'https://github.com/chipsec/chipsec', + +- data_files = data_files, + packages = mypackages + + ) +-- +1.9.0 + diff --git a/meta-luv/recipes-core/chipsec/chipsec/chipsec b/meta-luv/recipes-core/chipsec/chipsec/chipsec new file mode 100644 index 00000000000..888df89b79e --- /dev/null +++ b/meta-luv/recipes-core/chipsec/chipsec/chipsec @@ -0,0 +1,14 @@ +#!/bin/sh +# +# Copyright (C) 2014 Intel Corporation +# +# Load the CHIPSEC kernel module and invoke the chipsec main file. + +modprobe -q chipsec +if [ $? -ne 0 ]; then + exit 1 +fi + +# The below is replaced with the python site packages path during +# do_patch(). +python PYTHONPATH/chipsec_main.py -i -v diff --git a/meta-luv/recipes-core/chipsec/chipsec/luv-parser-chipsec b/meta-luv/recipes-core/chipsec/chipsec/luv-parser-chipsec new file mode 100644 index 00000000000..a91067abb17 --- /dev/null +++ b/meta-luv/recipes-core/chipsec/chipsec/luv-parser-chipsec @@ -0,0 +1,32 @@ +#!/bin/sh +# +# Parse the output of chipsec and write a luv-test-manager compatible +# log to stdout. + +awk ' /\[\+\] imported/ { + test_strs[$3] = 1; +} + +/\[\*\] SKIPPED/ { + if (test_strs[$3]) { + printf("1.0 chipsec %s RESULT 0 0 0 0 1\n", $3); + } +} + +/^ERROR/ { + if (test_strs[$2]) { + printf("1.0 chipsec %s RESULT 0 0 0 1 0\n", $2); + } +} + +/\[\-\] FAILED/ { + if (test_strs[$3]) { + printf("1.0 chipsec %s RESULT 0 1 0 0 0\n", $3); + } +} + +/\[\+\] PASSED/ { + if (test_strs[$3]) { + printf("1.0 chipsec %s RESULT 1 0 0 0 0\n", $3); + } +}' diff --git a/meta-luv/recipes-core/chipsec/chipsec_git.bb b/meta-luv/recipes-core/chipsec/chipsec_git.bb new file mode 100644 index 00000000000..c344921d7cd --- /dev/null +++ b/meta-luv/recipes-core/chipsec/chipsec_git.bb @@ -0,0 +1,80 @@ +SUMMARY = "CHIPSEC: Platform Security Assessment Framework" +DESCRIPTION = "CHIPSEC is a framework for analyzing security of PC \ +platforms including hardware, system firmware including BIOS/UEFI \ +and the configuration of platform components." + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381" + +SRC_URI = "git://github.com/chipsec/chipsec.git \ + file://0001-helper-linux-Use-CC-instead-of-cc.patch \ + file://0002-helper-linux-Allow-INC-to-be-overidden.patch \ + file://0003-chipsec_main.py-Remove-absolute-reference-to-python-.patch \ + file://0005-tool-setup.py-Delete-Windows-drivers-from-data_files.patch \ + file://chipsec file://luv-parser-chipsec" + +SRCREV="v1.1.0" + +DEPENDS = "virtual/kernel python-core" +RDEPENDS_${PN} = "python python-shell python-stringold python-xml \ + python-ctypes python-fcntl python-importlib" + +inherit module-base +inherit python-dir +inherit distutils +inherit luv-test + +S = "${WORKDIR}/git" + +export INC = "-I${STAGING_INCDIR}/${PYTHON_DIR}" + +fix_mod_path() { + sed -i -e "s:^INSTALL_MOD_PATH_PREFIX = .*:INSTALL_MOD_PATH_PREFIX = \"${PYTHON_SITEPACKAGES_DIR}\":" ${S}/source/tool/chipsec_main.py + sed -i -e "s:PYTHONPATH:${PYTHON_SITEPACKAGES_DIR}:" ${WORKDIR}/chipsec +} + +do_patch_append() { + bb.build.exec_func('fix_mod_path', d) +} + +do_compile_prepend() { + cd ${S}/source/tool +} + +do_compile_append() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + + oe_runmake KERNEL_SRC_DIR=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" -C ${STAGING_KERNEL_DIR} \ + scripts + + oe_runmake KERNEL_SRC_DIR=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" INC="${INC}" -C ${S}/source/drivers/linux +} + +do_install_prepend() { + cd ${S}/source/tool +} + +do_install_append() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/chipsec ${D}${bindir} + + # Install the kernel driver + oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" \ + KERNEL_SRC=${STAGING_KERNEL_DIR} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + -C ${STAGING_KERNEL_DIR} \ + M="${S}/source/drivers/linux" \ + modules_install +} + +LUV_TEST_LOG_PARSER="luv-parser-chipsec" + +FILES_${PN} += "/lib/modules/${KERNEL_VERSION}/extra/chipsec.ko" diff --git a/meta-luv/recipes-core/efivarfs/efivarfs-test.bb b/meta-luv/recipes-core/efivarfs/efivarfs-test.bb new file mode 100644 index 00000000000..6afc08dbb76 --- /dev/null +++ b/meta-luv/recipes-core/efivarfs/efivarfs-test.bb @@ -0,0 +1,46 @@ +DESCRIPTION = "EFI varfs tests" +HOMEPAGE = "https://www.kernel.org/pub/linux/kernel" +SECTION = "base" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" +KBRANCH="stable" + +# Picking up matts branch +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git;protocol=git;branch=${KBRANCH} \ + file://bash-to-sh.patch \ + file://luv-parser-efivarfs \ + file://efivarfs" + +#we need some of the stuff below +DEPENDS_class-native += "qemu-native" +SRCREV="${AUTOREV}" +inherit autotools luv-test +S = "${WORKDIR}/git" + +# This is to just to satisfy the compilation error +#I am not sure why I am getting this +FILES_${PN}-dbg += "/usr/share/efivarfs-test/.debug" + +#This is the compilation area +#we need to compile the self tests +do_compile() { + make CROSS_COMPILE=${TARGET_PREFIX} -C tools/testing/selftests/efivarfs +} + + +#Installing is nothing but putting things in place +do_install() { + # Creating a directory + install -d ${D}${datadir}/efivarfs-test + + #Copying some of the files, these are part of the linux code + install -m 0755 ${S}/tools/testing/selftests/efivarfs/create-read ${D}${datadir}/efivarfs-test + install -m 0755 ${S}/tools/testing/selftests/efivarfs/open-unlink ${D}${datadir}/efivarfs-test + install -m 0755 ${S}/tools/testing/selftests/efivarfs/efivarfs.sh ${D}${datadir}/efivarfs-test + + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/efivarfs ${D}${bindir} +} + +LUV_TEST_LOG_PARSER="luv-parser-efivarfs" +LUV_TEST="efivarfs" diff --git a/meta-luv/recipes-core/efivarfs/efivarfs-test/bash-to-sh.patch b/meta-luv/recipes-core/efivarfs/efivarfs-test/bash-to-sh.patch new file mode 100644 index 00000000000..5b0c97cdc74 --- /dev/null +++ b/meta-luv/recipes-core/efivarfs/efivarfs-test/bash-to-sh.patch @@ -0,0 +1,14 @@ +#This is just to say that oah this is a shell script not a bash +# we can add the bash dependency but its not a good idea +diff --git a/tools/testing/selftests/efivarfs/efivarfs.sh b/tools/testing/selftests/efivarfs/efivarfs.sh +old mode 100644 +new mode 100755 +index 77edcdc..7d64ff0 +--- a/tools/testing/selftests/efivarfs/efivarfs.sh ++++ b/tools/testing/selftests/efivarfs/efivarfs.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + efivarfs_mount=/sys/firmware/efi/efivars + test_guid=210be57c-9849-4fc7-a635-e6382d1aec27 diff --git a/meta-luv/recipes-core/efivarfs/efivarfs-test/efivarfs b/meta-luv/recipes-core/efivarfs/efivarfs-test/efivarfs new file mode 100644 index 00000000000..e6d86ea2810 --- /dev/null +++ b/meta-luv/recipes-core/efivarfs/efivarfs-test/efivarfs @@ -0,0 +1,15 @@ +#!/bin/sh +# +# Copyright (C) 2014 Intel Corporation +# +# Executing the efivarfs tests is not straight forward as they make lots +# of assumptions about their environment - namely that they're being +# executed from within the kernel source tree. + +TEST_DIR="/usr/share/efivarfs-test/" + +pushd ${TEST_DIR} > /dev/null + +./efivarfs.sh + +popd > /dev/null diff --git a/meta-luv/recipes-core/efivarfs/efivarfs-test/luv-parser-efivarfs b/meta-luv/recipes-core/efivarfs/efivarfs-test/luv-parser-efivarfs new file mode 100644 index 00000000000..16d5ec70bcb --- /dev/null +++ b/meta-luv/recipes-core/efivarfs/efivarfs-test/luv-parser-efivarfs @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Parse the output of the Linux kernel efivarfs selftests and write to +# stdout in a luv-test-manager compatible log. + +awk '/running/ { + test=$2 + printf ("1.0 efivarfs %s INFO\n", test); + fflush(""); + } + + /\[PASS\]/ { + printf ("1.0 efivarfs %s RESULT 1 0 0 0\n", test); + fflush(""); + } + + /\[FAIL\]/ { + printf ("1.0 efivarfs %s RESULT 0 1 0 0\n", test); + fflush(""); + }' diff --git a/meta-luv/recipes-core/fwts/fwts/0001-efi_runtime-Set-default-value-for-KVER.patch b/meta-luv/recipes-core/fwts/fwts/0001-efi_runtime-Set-default-value-for-KVER.patch new file mode 100644 index 00000000000..bbe37b413ce --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0001-efi_runtime-Set-default-value-for-KVER.patch @@ -0,0 +1,27 @@ +From 1cdc7e119a0137f5028614db3bcebb6063d1f72a Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Thu, 3 Apr 2014 09:51:23 +0100 +Subject: [PATCH 1/4] efi_runtime: Set default value for $KVER + +Instead of requiring a value to be specified for $KVER, we can set a +default which will do the right thing in most cases, e.g. build the +efi_runtime module against the running kernel. + +Cc: Borislav Petkov +Signed-off-by: Matt Fleming +--- + efi_runtime/Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/efi_runtime/Makefile b/efi_runtime/Makefile +index a9c0ea7..b145502 100644 +--- a/efi_runtime/Makefile ++++ b/efi_runtime/Makefile +@@ -1,3 +1,4 @@ ++KVER ?= `uname -r` + obj-m += efi_runtime.o + all: + make -C /lib/modules/$(KVER)/build M=`pwd` modules +-- +1.7.11.7 + diff --git a/meta-luv/recipes-core/fwts/fwts/0002-efi_runtime-Refactor-ioctl-code-into-helper-function.patch b/meta-luv/recipes-core/fwts/fwts/0002-efi_runtime-Refactor-ioctl-code-into-helper-function.patch new file mode 100644 index 00000000000..84e233a79cf --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0002-efi_runtime-Refactor-ioctl-code-into-helper-function.patch @@ -0,0 +1,506 @@ +From 8da10c8c9dec4f2a3725c301ebe623f67fdb8766 Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Thu, 3 Apr 2014 10:21:41 +0100 +Subject: [PATCH 2/4] efi_runtime: Refactor ioctl code into helper functions + +efi_runtime_ioctl() has grown to be fairly unwieldy because it includes +all the data objects and logic in one place. Make use of helper +functions for each of the ioctl commands to make the code easier to read +and maintain. + +There is no intended change to functionality, just code movement. + +Signed-off-by: Matt Fleming +--- + efi_runtime/efi_runtime.c | 419 +++++++++++++++++++++++++++------------------- + 1 file changed, 246 insertions(+), 173 deletions(-) + +diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c +index db46f11..be1e20a 100644 +--- a/efi_runtime/efi_runtime.c ++++ b/efi_runtime/efi_runtime.c +@@ -100,235 +100,308 @@ static void convert_to_guid(efi_guid_t *vendor, EFI_GUID *vendor_guid) + vendor_guid->Data4[i] = vendor->b[i+8]; + } + +-static long efi_runtime_ioctl(struct file *file, unsigned int cmd, +- unsigned long arg) ++static long efi_runtime_get_variable(unsigned long arg) + { +- efi_status_t status; + struct efi_getvariable __user *pgetvariable; +- struct efi_setvariable __user *psetvariable; +- +- efi_guid_t vendor; +- EFI_GUID vendor_guid; + unsigned long datasize; ++ EFI_GUID vendor_guid; ++ efi_guid_t vendor; ++ efi_status_t status; + uint32_t attr; + +- efi_time_t eft; +- efi_time_cap_t cap; +- struct efi_gettime __user *pgettime; +- struct efi_settime __user *psettime; ++ pgetvariable = (struct efi_getvariable __user *)arg; ++ ++ if (get_user(datasize, pgetvariable->DataSize) || ++ copy_from_user(&vendor_guid, pgetvariable->VendorGuid, ++ sizeof(EFI_GUID))) ++ return -EFAULT; ++ ++ convert_from_guid(&vendor, &vendor_guid); ++ status = efi.get_variable(pgetvariable->VariableName, &vendor, ++ &attr, &datasize, pgetvariable->Data); ++ if (put_user(status, pgetvariable->status)) ++ return -EFAULT; ++ if (status == EFI_SUCCESS) { ++ if (put_user(attr, pgetvariable->Attributes) || ++ put_user(datasize, pgetvariable->DataSize)) ++ return -EFAULT; ++ return 0; ++ } else { ++ printk(KERN_ERR "efi_runtime: can't get variable\n"); ++ return -EINVAL; ++ } + +- unsigned char enabled, pending; +- EFI_TIME efi_time; +- struct efi_getwakeuptime __user *pgetwakeuptime; +- struct efi_setwakeuptime __user *psetwakeuptime; ++ return 0; ++} + +- struct efi_getnextvariablename __user *pgetnextvariablename; +- unsigned long name_size; ++static long efi_runtime_set_variable(unsigned long arg) ++{ ++ struct efi_setvariable __user *psetvariable; ++ unsigned long datasize; ++ EFI_GUID vendor_guid; ++ efi_guid_t vendor; ++ efi_status_t status; ++ uint32_t attr; + +- struct efi_getnexthighmonotoniccount __user *pgetnexthighmonotoniccount; +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) +- struct efi_queryvariableinfo __user *pqueryvariableinfo; +- struct efi_querycapsulecapabilities __user *pquerycapsulecapabilities; +-#endif ++ psetvariable = (struct efi_setvariable __user *)arg; ++ if (get_user(datasize, &psetvariable->DataSize) || ++ get_user(attr, &psetvariable->Attributes) || ++ copy_from_user(&vendor_guid, psetvariable->VendorGuid, ++ sizeof(EFI_GUID))) ++ return -EFAULT; + +- switch (cmd) { +- case EFI_RUNTIME_GET_VARIABLE: +- pgetvariable = (struct efi_getvariable __user *)arg; ++ convert_from_guid(&vendor, &vendor_guid); ++ status = efi.set_variable(psetvariable->VariableName, &vendor, ++ attr, datasize, psetvariable->Data); + +- if (get_user(datasize, pgetvariable->DataSize) || +- copy_from_user(&vendor_guid, pgetvariable->VendorGuid, +- sizeof(EFI_GUID))) +- return -EFAULT; ++ if (put_user(status, psetvariable->status)) ++ return -EFAULT; ++ return status == EFI_SUCCESS ? 0 : -EINVAL; ++} + +- convert_from_guid(&vendor, &vendor_guid); +- status = efi.get_variable(pgetvariable->VariableName, &vendor, +- &attr, &datasize, pgetvariable->Data); +- if (put_user(status, pgetvariable->status)) +- return -EFAULT; +- if (status == EFI_SUCCESS) { +- if (put_user(attr, pgetvariable->Attributes) || +- put_user(datasize, pgetvariable->DataSize)) +- return -EFAULT; +- return 0; +- } else { +- printk(KERN_ERR "efi_runtime: can't get variable\n"); +- return -EINVAL; +- } ++static long efi_runtime_get_time(unsigned long arg) ++{ ++ struct efi_gettime __user *pgettime; ++ efi_status_t status; ++ efi_time_cap_t cap; ++ efi_time_t eft; + +- case EFI_RUNTIME_SET_VARIABLE: +- psetvariable = (struct efi_setvariable __user *)arg; +- if (get_user(datasize, &psetvariable->DataSize) || +- get_user(attr, &psetvariable->Attributes) || +- copy_from_user(&vendor_guid, psetvariable->VendorGuid, +- sizeof(EFI_GUID))) +- return -EFAULT; ++ status = efi.get_time(&eft, &cap); ++ pgettime = (struct efi_gettime __user *)arg; ++ if (put_user(status, pgettime->status)) ++ return -EFAULT; ++ if (status != EFI_SUCCESS) { ++ printk(KERN_ERR "efitime: can't read time\n"); ++ return -EINVAL; ++ } ++ if (put_user(cap.resolution, ++ &pgettime->Capabilities->Resolution) || ++ put_user(cap.accuracy, ++ &pgettime->Capabilities->Accuracy) || ++ put_user(cap.sets_to_zero, ++ &pgettime->Capabilities->SetsToZero)) ++ return -EFAULT; ++ return copy_to_user(pgettime->Time, &eft, ++ sizeof(EFI_TIME)) ? -EFAULT : 0; ++} + +- convert_from_guid(&vendor, &vendor_guid); +- status = efi.set_variable(psetvariable->VariableName, &vendor, +- attr, datasize, psetvariable->Data); ++static long efi_runtime_set_time(unsigned long arg) ++{ ++ struct efi_settime __user *psettime; ++ efi_status_t status; ++ EFI_TIME efi_time; ++ efi_time_t eft; + +- if (put_user(status, psetvariable->status)) +- return -EFAULT; +- return status == EFI_SUCCESS ? 0 : -EINVAL; ++ psettime = (struct efi_settime __user *)arg; ++ if (copy_from_user(&efi_time, psettime->Time, ++ sizeof(EFI_TIME))) ++ return -EFAULT; ++ convert_to_efi_time(&eft, &efi_time); ++ status = efi.set_time(&eft); + +- case EFI_RUNTIME_GET_TIME: +- status = efi.get_time(&eft, &cap); +- pgettime = (struct efi_gettime __user *)arg; +- if (put_user(status, pgettime->status)) +- return -EFAULT; +- if (status != EFI_SUCCESS) { +- printk(KERN_ERR "efitime: can't read time\n"); +- return -EINVAL; +- } +- if (put_user(cap.resolution, +- &pgettime->Capabilities->Resolution) || +- put_user(cap.accuracy, +- &pgettime->Capabilities->Accuracy) || +- put_user(cap.sets_to_zero, +- &pgettime->Capabilities->SetsToZero)) +- return -EFAULT; +- return copy_to_user(pgettime->Time, &eft, +- sizeof(EFI_TIME)) ? -EFAULT : 0; ++ if (put_user(status, psettime->status)) ++ return -EFAULT; + +- case EFI_RUNTIME_SET_TIME: ++ return status == EFI_SUCCESS ? 0 : -EINVAL; ++} + +- psettime = (struct efi_settime __user *)arg; +- if (copy_from_user(&efi_time, psettime->Time, +- sizeof(EFI_TIME))) +- return -EFAULT; +- convert_to_efi_time(&eft, &efi_time); +- status = efi.set_time(&eft); ++static long efi_runtime_get_waketime(unsigned long arg) ++{ ++ struct efi_getwakeuptime __user *pgetwakeuptime; ++ unsigned char enabled, pending; ++ efi_status_t status; ++ EFI_TIME efi_time; ++ efi_time_t eft; + +- if (put_user(status, psettime->status)) +- return -EFAULT; ++ status = efi.get_wakeup_time((efi_bool_t *)&enabled, ++ (efi_bool_t *)&pending, &eft); + +- return status == EFI_SUCCESS ? 0 : -EINVAL; ++ pgetwakeuptime = (struct efi_getwakeuptime __user *)arg; + +- case EFI_RUNTIME_GET_WAKETIME: ++ if (put_user(status, pgetwakeuptime->status)) ++ return -EFAULT; ++ if (status != EFI_SUCCESS) ++ return -EINVAL; + +- status = efi.get_wakeup_time((efi_bool_t *)&enabled, +- (efi_bool_t *)&pending, &eft); ++ if (put_user(enabled, pgetwakeuptime->Enabled) || ++ put_user(pending, pgetwakeuptime->Pending)) ++ return -EFAULT; + +- pgetwakeuptime = (struct efi_getwakeuptime __user *)arg; ++ convert_from_efi_time(&eft, &efi_time); + +- if (put_user(status, pgetwakeuptime->status)) +- return -EFAULT; +- if (status != EFI_SUCCESS) +- return -EINVAL; ++ return copy_to_user(pgetwakeuptime->Time, &efi_time, ++ sizeof(EFI_TIME)) ? -EFAULT : 0; ++} + +- if (put_user(enabled, pgetwakeuptime->Enabled) || +- put_user(pending, pgetwakeuptime->Pending)) +- return -EFAULT; ++static long efi_runtime_set_waketime(unsigned long arg) ++{ ++ struct efi_setwakeuptime __user *psetwakeuptime; ++ unsigned char enabled; ++ efi_status_t status; ++ EFI_TIME efi_time; ++ efi_time_t eft; + +- convert_from_efi_time(&eft, &efi_time); ++ psetwakeuptime = (struct efi_setwakeuptime __user *)arg; + +- return copy_to_user(pgetwakeuptime->Time, &efi_time, +- sizeof(EFI_TIME)) ? -EFAULT : 0; ++ if (get_user(enabled, &psetwakeuptime->Enabled) || ++ copy_from_user(&efi_time, ++ psetwakeuptime->Time, ++ sizeof(EFI_TIME))) ++ return -EFAULT; + +- case EFI_RUNTIME_SET_WAKETIME: ++ convert_to_efi_time(&eft, &efi_time); + +- psetwakeuptime = (struct efi_setwakeuptime __user *)arg; ++ status = efi.set_wakeup_time(enabled, &eft); + +- if (get_user(enabled, &psetwakeuptime->Enabled) || +- copy_from_user(&efi_time, +- psetwakeuptime->Time, +- sizeof(EFI_TIME))) +- return -EFAULT; ++ if (put_user(status, psetwakeuptime->status)) ++ return -EFAULT; + +- convert_to_efi_time(&eft, &efi_time); ++ return status == EFI_SUCCESS ? 0 : -EINVAL; ++} + +- status = efi.set_wakeup_time(enabled, &eft); ++static long efi_runtime_get_nextvariablename(unsigned long arg) ++{ ++ struct efi_getnextvariablename __user *pgetnextvariablename; ++ unsigned long name_size; ++ efi_status_t status; ++ efi_guid_t vendor; ++ EFI_GUID vendor_guid; + +- if (put_user(status, psetwakeuptime->status)) +- return -EFAULT; ++ pgetnextvariablename = (struct efi_getnextvariablename ++ __user *)arg; ++ ++ if (get_user(name_size, pgetnextvariablename->VariableNameSize) ++ || copy_from_user(&vendor_guid, ++ pgetnextvariablename->VendorGuid, ++ sizeof(EFI_GUID))) ++ return -EFAULT; ++ if (name_size > 1024) ++ return -EFAULT; ++ ++ convert_from_guid(&vendor, &vendor_guid); ++ ++ status = efi.get_next_variable(&name_size, ++ pgetnextvariablename->VariableName, ++ &vendor); ++ if (put_user(status, pgetnextvariablename->status)) ++ return -EFAULT; ++ convert_to_guid(&vendor, &vendor_guid); ++ ++ if (put_user(name_size, pgetnextvariablename->VariableNameSize)) ++ return -EFAULT; ++ ++ if (copy_to_user(pgetnextvariablename->VendorGuid, ++ &vendor_guid, sizeof(EFI_GUID))) ++ return -EFAULT; ++ if (status != EFI_SUCCESS) ++ return -EINVAL; ++ return 0; ++} + +- return status == EFI_SUCCESS ? 0 : -EINVAL; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) ++static long efi_runtime_query_variableinfo(unsigned long arg) ++{ ++ struct efi_queryvariableinfo __user *pqueryvariableinfo; ++ efi_status_t status; ++ uint32_t attr; + +- case EFI_RUNTIME_GET_NEXTVARIABLENAME: ++ pqueryvariableinfo = (struct efi_queryvariableinfo __user *)arg; + +- pgetnextvariablename = (struct efi_getnextvariablename +- __user *)arg; ++ if (get_user(attr, &pqueryvariableinfo->Attributes)) ++ return -EFAULT; + +- if (get_user(name_size, pgetnextvariablename->VariableNameSize) +- || copy_from_user(&vendor_guid, +- pgetnextvariablename->VendorGuid, +- sizeof(EFI_GUID))) +- return -EFAULT; +- if (name_size > 1024) +- return -EFAULT; ++ status = efi.query_variable_info(attr, ++ pqueryvariableinfo->MaximumVariableStorageSize, ++ pqueryvariableinfo->RemainingVariableStorageSize ++ , pqueryvariableinfo->MaximumVariableSize); ++ if (put_user(status, pqueryvariableinfo->status)) ++ return -EFAULT; ++ if (status != EFI_SUCCESS) ++ return -EINVAL; + +- convert_from_guid(&vendor, &vendor_guid); ++ return 0; ++} ++#endif + +- status = efi.get_next_variable(&name_size, +- pgetnextvariablename->VariableName, +- &vendor); +- if (put_user(status, pgetnextvariablename->status)) +- return -EFAULT; +- convert_to_guid(&vendor, &vendor_guid); ++static long efi_runtime_get_nexthighmonocount(unsigned long arg) ++{ ++ struct efi_getnexthighmonotoniccount __user *pgetnexthighmonotoniccount; ++ efi_status_t status; + +- if (put_user(name_size, pgetnextvariablename->VariableNameSize)) +- return -EFAULT; ++ pgetnexthighmonotoniccount = (struct ++ efi_getnexthighmonotoniccount __user *)arg; + +- if (copy_to_user(pgetnextvariablename->VendorGuid, +- &vendor_guid, sizeof(EFI_GUID))) +- return -EFAULT; +- if (status != EFI_SUCCESS) +- return -EINVAL; +- return 0; ++ status = efi.get_next_high_mono_count(pgetnexthighmonotoniccount ++ ->HighCount); ++ if (put_user(status, pgetnexthighmonotoniccount->status)) ++ return -EFAULT; ++ if (status != EFI_SUCCESS) ++ return -EINVAL; ++ ++ return 0; ++} + + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) +- case EFI_RUNTIME_QUERY_VARIABLEINFO: ++static long efi_runtime_query_capsulecaps(unsigned long arg) ++{ ++ struct efi_querycapsulecapabilities __user *pquerycapsulecapabilities; ++ efi_status_t status; + +- pqueryvariableinfo = (struct efi_queryvariableinfo __user *)arg; ++ pquerycapsulecapabilities = (struct ++ efi_querycapsulecapabilities __user *)arg; + +- if (get_user(attr, &pqueryvariableinfo->Attributes)) +- return -EFAULT; ++ status = efi.query_capsule_caps( ++ (efi_capsule_header_t **) ++ pquerycapsulecapabilities->CapsuleHeaderArray, ++ pquerycapsulecapabilities->CapsuleCount, ++ pquerycapsulecapabilities->MaximumCapsuleSize, ++ (int *)pquerycapsulecapabilities->ResetType); + +- status = efi.query_variable_info(attr, +- pqueryvariableinfo->MaximumVariableStorageSize, +- pqueryvariableinfo->RemainingVariableStorageSize +- , pqueryvariableinfo->MaximumVariableSize); +- if (put_user(status, pqueryvariableinfo->status)) +- return -EFAULT; +- if (status != EFI_SUCCESS) +- return -EINVAL; ++ if (put_user(status, pquerycapsulecapabilities->status)) ++ return -EFAULT; ++ if (status != EFI_SUCCESS) ++ return -EINVAL; + +- return 0; ++ return 0; ++} + #endif + +- case EFI_RUNTIME_GET_NEXTHIGHMONOTONICCOUNT: ++static long efi_runtime_ioctl(struct file *file, unsigned int cmd, ++ unsigned long arg) ++{ ++ switch (cmd) { ++ case EFI_RUNTIME_GET_VARIABLE: ++ return efi_runtime_get_variable(arg); + +- pgetnexthighmonotoniccount = (struct +- efi_getnexthighmonotoniccount __user *)arg; ++ case EFI_RUNTIME_SET_VARIABLE: ++ return efi_runtime_set_variable(arg); + +- status = efi.get_next_high_mono_count(pgetnexthighmonotoniccount +- ->HighCount); +- if (put_user(status, pgetnexthighmonotoniccount->status)) +- return -EFAULT; +- if (status != EFI_SUCCESS) +- return -EINVAL; ++ case EFI_RUNTIME_GET_TIME: ++ return efi_runtime_get_time(arg); ++ ++ case EFI_RUNTIME_SET_TIME: ++ return efi_runtime_set_time(arg); + +- return 0; ++ case EFI_RUNTIME_GET_WAKETIME: ++ return efi_runtime_get_waketime(arg); + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) +- case EFI_RUNTIME_QUERY_CAPSULECAPABILITIES: ++ case EFI_RUNTIME_SET_WAKETIME: ++ return efi_runtime_set_waketime(arg); + +- pquerycapsulecapabilities = (struct +- efi_querycapsulecapabilities __user *)arg; ++ case EFI_RUNTIME_GET_NEXTVARIABLENAME: ++ return efi_runtime_get_nextvariablename(arg); + +- status = efi.query_capsule_caps( +- (efi_capsule_header_t **) +- pquerycapsulecapabilities->CapsuleHeaderArray, +- pquerycapsulecapabilities->CapsuleCount, +- pquerycapsulecapabilities->MaximumCapsuleSize, +- (int *)pquerycapsulecapabilities->ResetType); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) ++ case EFI_RUNTIME_QUERY_VARIABLEINFO: ++ return efi_runtime_query_variableinfo(arg); ++#endif + +- if (put_user(status, pquerycapsulecapabilities->status)) +- return -EFAULT; +- if (status != EFI_SUCCESS) +- return -EINVAL; ++ case EFI_RUNTIME_GET_NEXTHIGHMONOTONICCOUNT: ++ return efi_runtime_get_nexthighmonocount(arg); + +- return 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) ++ case EFI_RUNTIME_QUERY_CAPSULECAPABILITIES: ++ return efi_runtime_query_capsulecaps(arg); + #endif + } + +-- +1.7.11.7 + diff --git a/meta-luv/recipes-core/fwts/fwts/0003-efi_runtime-Group-kernel-version-dependent-functions.patch b/meta-luv/recipes-core/fwts/fwts/0003-efi_runtime-Group-kernel-version-dependent-functions.patch new file mode 100644 index 00000000000..f0829da3d52 --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0003-efi_runtime-Group-kernel-version-dependent-functions.patch @@ -0,0 +1,99 @@ +From 24cb3f2fef2d6cdecd2e1312c3a228e5e0f2403c Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Thu, 3 Apr 2014 10:26:13 +0100 +Subject: [PATCH 3/4] efi_runtime: Group kernel version dependent functions + +Instead of using multiple identical #if preprocessor blocks group the +function calls and implementations together so that we can keep the +preprocessor checks to a minimum. + +This change also more clearly conveys the message that the two functions +are dependent on the same kernel version. With multiple #if block it's +easy to misread them and think that, becuase there's more than one, they +must have different kernel version requirements. + +Signed-off-by: Matt Fleming +--- + efi_runtime/efi_runtime.c | 47 ++++++++++++++++++++++------------------------- + 1 file changed, 22 insertions(+), 25 deletions(-) + +diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c +index be1e20a..1d905e2 100644 +--- a/efi_runtime/efi_runtime.c ++++ b/efi_runtime/efi_runtime.c +@@ -298,6 +298,25 @@ static long efi_runtime_get_nextvariablename(unsigned long arg) + return 0; + } + ++static long efi_runtime_get_nexthighmonocount(unsigned long arg) ++{ ++ struct efi_getnexthighmonotoniccount __user *pgetnexthighmonotoniccount; ++ efi_status_t status; ++ ++ pgetnexthighmonotoniccount = (struct ++ efi_getnexthighmonotoniccount __user *)arg; ++ ++ status = efi.get_next_high_mono_count(pgetnexthighmonotoniccount ++ ->HighCount); ++ if (put_user(status, pgetnexthighmonotoniccount->status)) ++ return -EFAULT; ++ if (status != EFI_SUCCESS) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) + static long efi_runtime_query_variableinfo(unsigned long arg) + { +@@ -321,27 +340,7 @@ static long efi_runtime_query_variableinfo(unsigned long arg) + + return 0; + } +-#endif + +-static long efi_runtime_get_nexthighmonocount(unsigned long arg) +-{ +- struct efi_getnexthighmonotoniccount __user *pgetnexthighmonotoniccount; +- efi_status_t status; +- +- pgetnexthighmonotoniccount = (struct +- efi_getnexthighmonotoniccount __user *)arg; +- +- status = efi.get_next_high_mono_count(pgetnexthighmonotoniccount +- ->HighCount); +- if (put_user(status, pgetnexthighmonotoniccount->status)) +- return -EFAULT; +- if (status != EFI_SUCCESS) +- return -EINVAL; +- +- return 0; +-} +- +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) + static long efi_runtime_query_capsulecaps(unsigned long arg) + { + struct efi_querycapsulecapabilities __user *pquerycapsulecapabilities; +@@ -391,15 +390,13 @@ static long efi_runtime_ioctl(struct file *file, unsigned int cmd, + case EFI_RUNTIME_GET_NEXTVARIABLENAME: + return efi_runtime_get_nextvariablename(arg); + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) +- case EFI_RUNTIME_QUERY_VARIABLEINFO: +- return efi_runtime_query_variableinfo(arg); +-#endif +- + case EFI_RUNTIME_GET_NEXTHIGHMONOTONICCOUNT: + return efi_runtime_get_nexthighmonocount(arg); + + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) ++ case EFI_RUNTIME_QUERY_VARIABLEINFO: ++ return efi_runtime_query_variableinfo(arg); ++ + case EFI_RUNTIME_QUERY_CAPSULECAPABILITIES: + return efi_runtime_query_capsulecaps(arg); + #endif +-- +1.7.11.7 + diff --git a/meta-luv/recipes-core/fwts/fwts/0004-efi_runtime-Do-not-pass-user-addresses-to-firmware.patch b/meta-luv/recipes-core/fwts/fwts/0004-efi_runtime-Do-not-pass-user-addresses-to-firmware.patch new file mode 100644 index 00000000000..cae364fdb30 --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0004-efi_runtime-Do-not-pass-user-addresses-to-firmware.patch @@ -0,0 +1,374 @@ +From 4d6baaaed706bcb006aa296b2b63799b2082df3a Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Thu, 3 Apr 2014 12:20:48 +0100 +Subject: [PATCH 4/4] efi_runtime: Do not pass user addresses to firmware + +Currently there's some inconsistency with how arguments are passed to +the firmware from the efi_runtime driver. Some values have the standard +get_user()/put_user() calls, others do not. + +Passing userspace pointers directly to the firmware is a bug because +those addresses may fault. And if they are going to fault we'd like to +know about it in the kernel rather than at some later time when +executing in firmware context. + +Furthermore, beginning with v3.14 of the kernel the current tests +actually cause the kernel to crash because firmware calls are now done +with their own, entirely separate, page tables - no user addresses are +mapped during execution of runtime services. + +This change doesn't require predication on a particular kernel version +because the efi_runtime should really have always done this copying +to/from userspace for every argument of the runtime services. + +This patch is heavily based on one from Borislav. + +Cc: Borislav Petkov +Signed-off-by: Matt Fleming +--- + efi_runtime/efi_runtime.c | 239 +++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 215 insertions(+), 24 deletions(-) + +diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c +index 1d905e2..7ce3e2a 100644 +--- a/efi_runtime/efi_runtime.c ++++ b/efi_runtime/efi_runtime.c +@@ -24,7 +24,7 @@ + #include + #include + #include +- ++#include + #include + + #include "efi_runtime.h" +@@ -100,6 +100,110 @@ static void convert_to_guid(efi_guid_t *vendor, EFI_GUID *vendor_guid) + vendor_guid->Data4[i] = vendor->b[i+8]; + } + ++/* ++ * Count the bytes in 'str', including the terminating NULL. ++ * ++ * Note this function returns the number of *bytes*, not the number of ++ * ucs2 characters. ++ */ ++static inline size_t __strsize(uint16_t *str) ++{ ++ uint16_t *s = str; ++ size_t len; ++ ++ if (!str) ++ return 0; ++ ++ /* Include terminating NULL */ ++ len = sizeof(uint16_t); ++ ++ while (*s++ != 0) ++ len += sizeof(uint16_t); ++ ++ return len; ++} ++ ++/* ++ * Copy a ucs2 string from user space into a newly allocated kernel ++ * buffer. ++ * ++ * We take an explicit number of bytes to copy, and therefore do not ++ * make any assumptions about 'src' (such as it being a valid string). ++ */ ++static inline int ++get_ucs2_len(uint16_t **dst, uint16_t __user *src, size_t len) ++{ ++ if (!src) { ++ *dst = NULL; ++ return 0; ++ } ++ ++ if (!access_ok(VERIFY_READ, src, 1)) ++ return -EFAULT; ++ ++ *dst = kmalloc(len, GFP_KERNEL); ++ if (!*dst) ++ return -ENOMEM; ++ ++ if (copy_from_user(*dst, src, len)) { ++ kfree(*dst); ++ return -EFAULT; ++ } ++ ++ return 0; ++} ++ ++/* ++ * Copy a ucs2 string from user space into a newly allocated kernel ++ * buffer. ++ * ++ * If a non-zero value is returned, the caller MUST NOT access 'dst'. ++ */ ++static inline int get_ucs2(uint16_t **dst, uint16_t __user *src) ++{ ++ size_t len; ++ ++ if (!access_ok(VERIFY_READ, src, 1)) ++ return -EFAULT; ++ ++ len = __strsize(src); ++ return get_ucs2_len(dst, src, len); ++} ++ ++/* ++ * Write a ucs2 string to a user buffer. ++ * ++ * 'len' specifies the number of bytes to copy. ++ */ ++static inline int ++put_ucs2_len(uint16_t *src, uint16_t __user *dst, size_t len) ++{ ++ if (!src) ++ return 0; ++ ++ if (!access_ok(VERIFY_WRITE, dst, 1)) ++ return -EFAULT; ++ ++ return copy_to_user(dst, src, len); ++} ++ ++/* ++ * Write a NUL-terminated ucs2 string to a user buffer. ++ * ++ * We calculate the number of bytes to write from the ucs2 string 'src', ++ * including the terminating NUL. ++ */ ++static inline int put_ucs2(uint16_t *src, uint16_t __user *dst) ++{ ++ size_t len; ++ ++ if (!access_ok(VERIFY_WRITE, dst, 1)) ++ return -EFAULT; ++ ++ len = __strsize(src); ++ return put_ucs2_len(src, dst, len); ++} ++ + static long efi_runtime_get_variable(unsigned long arg) + { + struct efi_getvariable __user *pgetvariable; +@@ -107,7 +211,10 @@ static long efi_runtime_get_variable(unsigned long arg) + EFI_GUID vendor_guid; + efi_guid_t vendor; + efi_status_t status; ++ uint16_t *name; + uint32_t attr; ++ void *data; ++ int rv = 0; + + pgetvariable = (struct efi_getvariable __user *)arg; + +@@ -117,8 +224,27 @@ static long efi_runtime_get_variable(unsigned long arg) + return -EFAULT; + + convert_from_guid(&vendor, &vendor_guid); +- status = efi.get_variable(pgetvariable->VariableName, &vendor, +- &attr, &datasize, pgetvariable->Data); ++ ++ rv = get_ucs2(&name, pgetvariable->VariableName); ++ if (rv) ++ return rv; ++ ++ data = kmalloc(datasize, GFP_KERNEL); ++ if (!data) { ++ kfree(name); ++ return -ENOMEM; ++ } ++ ++ status = efi.get_variable(name, &vendor, &attr, &datasize, data); ++ ++ kfree(name); ++ ++ rv = copy_to_user(pgetvariable->Data, data, datasize); ++ kfree(data); ++ ++ if (rv) ++ return rv; ++ + if (put_user(status, pgetvariable->status)) + return -EFAULT; + if (status == EFI_SUCCESS) { +@@ -141,7 +267,10 @@ static long efi_runtime_set_variable(unsigned long arg) + EFI_GUID vendor_guid; + efi_guid_t vendor; + efi_status_t status; ++ uint16_t *name; + uint32_t attr; ++ void *data; ++ int rv; + + psetvariable = (struct efi_setvariable __user *)arg; + if (get_user(datasize, &psetvariable->DataSize) || +@@ -151,8 +280,21 @@ static long efi_runtime_set_variable(unsigned long arg) + return -EFAULT; + + convert_from_guid(&vendor, &vendor_guid); +- status = efi.set_variable(psetvariable->VariableName, &vendor, +- attr, datasize, psetvariable->Data); ++ ++ rv = get_ucs2(&name, psetvariable->VariableName); ++ if (rv) ++ return rv; ++ ++ data = kmalloc(datasize, GFP_KERNEL); ++ if (copy_from_user(data, psetvariable->Data, datasize)) { ++ kfree(name); ++ return -EFAULT; ++ } ++ ++ status = efi.set_variable(name, &vendor, attr, datasize, data); ++ ++ kfree(data); ++ kfree(name); + + if (put_user(status, psetvariable->status)) + return -EFAULT; +@@ -266,6 +408,8 @@ static long efi_runtime_get_nextvariablename(unsigned long arg) + efi_status_t status; + efi_guid_t vendor; + EFI_GUID vendor_guid; ++ uint16_t *name; ++ int rv; + + pgetnextvariablename = (struct efi_getnextvariablename + __user *)arg; +@@ -280,9 +424,18 @@ static long efi_runtime_get_nextvariablename(unsigned long arg) + + convert_from_guid(&vendor, &vendor_guid); + +- status = efi.get_next_variable(&name_size, +- pgetnextvariablename->VariableName, +- &vendor); ++ rv = get_ucs2_len(&name, pgetnextvariablename->VariableName, 1024); ++ if (rv) ++ return rv; ++ ++ status = efi.get_next_variable(&name_size, name, &vendor); ++ ++ rv = put_ucs2_len(name, pgetnextvariablename->VariableName, name_size); ++ kfree(name); ++ ++ if (rv) ++ return -EFAULT; ++ + if (put_user(status, pgetnextvariablename->status)) + return -EFAULT; + convert_to_guid(&vendor, &vendor_guid); +@@ -302,14 +455,18 @@ static long efi_runtime_get_nexthighmonocount(unsigned long arg) + { + struct efi_getnexthighmonotoniccount __user *pgetnexthighmonotoniccount; + efi_status_t status; ++ uint32_t count; + + pgetnexthighmonotoniccount = (struct + efi_getnexthighmonotoniccount __user *)arg; + +- status = efi.get_next_high_mono_count(pgetnexthighmonotoniccount +- ->HighCount); ++ status = efi.get_next_high_mono_count(&count); + if (put_user(status, pgetnexthighmonotoniccount->status)) + return -EFAULT; ++ ++ if (put_user(count, pgetnexthighmonotoniccount->HighCount)) ++ return -EFAULT; ++ + if (status != EFI_SUCCESS) + return -EINVAL; + +@@ -322,6 +479,7 @@ static long efi_runtime_query_variableinfo(unsigned long arg) + { + struct efi_queryvariableinfo __user *pqueryvariableinfo; + efi_status_t status; ++ uint64_t max_storage, remaining, max_size; + uint32_t attr; + + pqueryvariableinfo = (struct efi_queryvariableinfo __user *)arg; +@@ -329,10 +487,18 @@ static long efi_runtime_query_variableinfo(unsigned long arg) + if (get_user(attr, &pqueryvariableinfo->Attributes)) + return -EFAULT; + +- status = efi.query_variable_info(attr, +- pqueryvariableinfo->MaximumVariableStorageSize, +- pqueryvariableinfo->RemainingVariableStorageSize +- , pqueryvariableinfo->MaximumVariableSize); ++ status = efi.query_variable_info(attr, &max_storage, ++ &remaining, &max_size); ++ ++ if (put_user(max_storage, pqueryvariableinfo->MaximumVariableStorageSize)) ++ return -EFAULT; ++ ++ if (put_user(remaining, pqueryvariableinfo->RemainingVariableStorageSize)) ++ return -EFAULT; ++ ++ if (put_user(max_size, pqueryvariableinfo->MaximumVariableSize)) ++ return -EFAULT; ++ + if (put_user(status, pqueryvariableinfo->status)) + return -EFAULT; + if (status != EFI_SUCCESS) +@@ -343,21 +509,46 @@ static long efi_runtime_query_variableinfo(unsigned long arg) + + static long efi_runtime_query_capsulecaps(unsigned long arg) + { +- struct efi_querycapsulecapabilities __user *pquerycapsulecapabilities; ++ struct efi_querycapsulecapabilities __user *u_caps; ++ struct efi_querycapsulecapabilities caps; ++ EFI_CAPSULE_HEADER *capsules; + efi_status_t status; ++ uint64_t max_size; ++ int i, reset_type; + +- pquerycapsulecapabilities = (struct +- efi_querycapsulecapabilities __user *)arg; ++ u_caps = (struct efi_querycapsulecapabilities __user *)arg; + +- status = efi.query_capsule_caps( +- (efi_capsule_header_t **) +- pquerycapsulecapabilities->CapsuleHeaderArray, +- pquerycapsulecapabilities->CapsuleCount, +- pquerycapsulecapabilities->MaximumCapsuleSize, +- (int *)pquerycapsulecapabilities->ResetType); ++ if (copy_from_user(&caps, u_caps, sizeof(caps))) ++ return -EFAULT; ++ ++ capsules = kcalloc(caps.CapsuleCount + 1, ++ sizeof(EFI_CAPSULE_HEADER), GFP_KERNEL); ++ if (!capsules) ++ return -ENOMEM; ++ ++ for (i = 0; i < caps.CapsuleCount; i++) { ++ if (copy_from_user(&capsules[i], ++ (EFI_CAPSULE_HEADER *)u_caps->CapsuleHeaderArray[i], ++ sizeof(EFI_CAPSULE_HEADER))) ++ return -EFAULT; ++ } ++ ++ caps.CapsuleHeaderArray = &capsules; + +- if (put_user(status, pquerycapsulecapabilities->status)) ++ status = efi.query_capsule_caps((efi_capsule_header_t **) ++ caps.CapsuleHeaderArray, ++ caps.CapsuleCount, ++ &max_size, &reset_type); ++ ++ if (put_user(status, u_caps->status)) ++ return -EFAULT; ++ ++ if (put_user(max_size, u_caps->MaximumCapsuleSize)) + return -EFAULT; ++ ++ if (put_user(reset_type, u_caps->ResetType)) ++ return -EFAULT; ++ + if (status != EFI_SUCCESS) + return -EINVAL; + +-- +1.7.11.7 + diff --git a/meta-luv/recipes-core/fwts/fwts/0005-efi_runtime-donot-dereference-user-address.patch b/meta-luv/recipes-core/fwts/fwts/0005-efi_runtime-donot-dereference-user-address.patch new file mode 100644 index 00000000000..b62113e5c74 --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0005-efi_runtime-donot-dereference-user-address.patch @@ -0,0 +1,145 @@ +diff -Nurp a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c +--- a/efi_runtime/efi_runtime.c 2014-07-27 00:43:39.263763036 -0700 ++++ b/efi_runtime/efi_runtime.c 2014-08-14 23:12:47.746531304 -0700 +@@ -304,52 +304,60 @@ static long efi_runtime_set_variable(uns + static long efi_runtime_get_time(unsigned long arg) + { + struct efi_gettime __user *pgettime; ++ struct efi_gettime pgettime_local; ++ EFI_TIME_CAPABILITIES __user *cap_local; + efi_status_t status; + efi_time_cap_t cap; + efi_time_t eft; + + status = efi.get_time(&eft, &cap); + pgettime = (struct efi_gettime __user *)arg; +- if (put_user(status, pgettime->status)) ++ if (copy_from_user(&pgettime_local, pgettime, sizeof(pgettime_local))) ++ return -EFAULT; ++ ++ cap_local = (EFI_TIME_CAPABILITIES *)pgettime_local.Capabilities; ++ if (put_user(status, pgettime_local.status)) + return -EFAULT; + if (status != EFI_SUCCESS) { + printk(KERN_ERR "efitime: can't read time\n"); + return -EINVAL; + } +- if (put_user(cap.resolution, +- &pgettime->Capabilities->Resolution) || +- put_user(cap.accuracy, +- &pgettime->Capabilities->Accuracy) || +- put_user(cap.sets_to_zero, +- &pgettime->Capabilities->SetsToZero)) ++ if (put_user(cap.resolution, ++ &(cap_local->Resolution)) || ++ put_user(cap.accuracy, &(cap_local->Accuracy)) || ++ put_user(cap.sets_to_zero,&(cap_local->SetsToZero))) + return -EFAULT; +- return copy_to_user(pgettime->Time, &eft, ++ return copy_to_user(pgettime_local.Time, &eft, + sizeof(EFI_TIME)) ? -EFAULT : 0; + } + + static long efi_runtime_set_time(unsigned long arg) + { + struct efi_settime __user *psettime; ++ struct efi_settime psettime_local; + efi_status_t status; + EFI_TIME efi_time; + efi_time_t eft; + + psettime = (struct efi_settime __user *)arg; +- if (copy_from_user(&efi_time, psettime->Time, ++ if (copy_from_user(&psettime_local, psettime, sizeof(psettime_local))) ++ return -EFAULT; ++ if (copy_from_user(&efi_time, psettime_local.Time, + sizeof(EFI_TIME))) + return -EFAULT; + convert_to_efi_time(&eft, &efi_time); + status = efi.set_time(&eft); + +- if (put_user(status, psettime->status)) ++ if (put_user(status, psettime_local.status)) + return -EFAULT; +- +- return status == EFI_SUCCESS ? 0 : -EINVAL; ++ ++ return status == EFI_SUCCESS ? 0 : -EINVAL; + } + + static long efi_runtime_get_waketime(unsigned long arg) + { + struct efi_getwakeuptime __user *pgetwakeuptime; ++ struct efi_getwakeuptime pgetwakeuptime_local; + unsigned char enabled, pending; + efi_status_t status; + EFI_TIME efi_time; +@@ -357,47 +365,49 @@ static long efi_runtime_get_waketime(uns + + status = efi.get_wakeup_time((efi_bool_t *)&enabled, + (efi_bool_t *)&pending, &eft); +- ++ + pgetwakeuptime = (struct efi_getwakeuptime __user *)arg; +- +- if (put_user(status, pgetwakeuptime->status)) ++ ++ if (copy_from_user(&pgetwakeuptime_local, pgetwakeuptime, sizeof(pgetwakeuptime_local))) ++ return -EFAULT; ++ if (put_user(status, pgetwakeuptime_local.status)) + return -EFAULT; + if (status != EFI_SUCCESS) + return -EINVAL; +- +- if (put_user(enabled, pgetwakeuptime->Enabled) || +- put_user(pending, pgetwakeuptime->Pending)) ++ if (put_user(enabled, pgetwakeuptime_local.Enabled) || ++ put_user(pending, pgetwakeuptime_local.Pending)) + return -EFAULT; +- + convert_from_efi_time(&eft, &efi_time); +- +- return copy_to_user(pgetwakeuptime->Time, &efi_time, ++ ++ return copy_to_user(pgetwakeuptime_local.Time, &efi_time, + sizeof(EFI_TIME)) ? -EFAULT : 0; + } + + static long efi_runtime_set_waketime(unsigned long arg) + { + struct efi_setwakeuptime __user *psetwakeuptime; ++ struct efi_setwakeuptime psetwakeuptime_local; + unsigned char enabled; + efi_status_t status; + EFI_TIME efi_time; + efi_time_t eft; + + psetwakeuptime = (struct efi_setwakeuptime __user *)arg; +- +- if (get_user(enabled, &psetwakeuptime->Enabled) || +- copy_from_user(&efi_time, +- psetwakeuptime->Time, +- sizeof(EFI_TIME))) ++ ++ if (copy_from_user(&psetwakeuptime_local, psetwakeuptime, sizeof(psetwakeuptime_local))) + return -EFAULT; +- ++ ++ if (get_user(enabled, &(psetwakeuptime_local.Enabled)) || ++ copy_from_user(&efi_time, psetwakeuptime_local.Time, sizeof(EFI_TIME))) ++ return -EFAULT; ++ + convert_to_efi_time(&eft, &efi_time); +- ++ + status = efi.set_wakeup_time(enabled, &eft); +- +- if (put_user(status, psetwakeuptime->status)) ++ ++ if (put_user(status, psetwakeuptime_local.status)) + return -EFAULT; +- ++ + return status == EFI_SUCCESS ? 0 : -EINVAL; + } + diff --git a/meta-luv/recipes-core/fwts/fwts/0006-cpu-microcode-remove-failures-when-kernel-does-not-h.patch b/meta-luv/recipes-core/fwts/fwts/0006-cpu-microcode-remove-failures-when-kernel-does-not-h.patch new file mode 100644 index 00000000000..5ba272a36db --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0006-cpu-microcode-remove-failures-when-kernel-does-not-h.patch @@ -0,0 +1,40 @@ +From 823c7c1ec79a88a1d7dab03b160f5fe79af17e71 Mon Sep 17 00:00:00 2001 +From: Alex Hung +Date: Tue, 17 Jun 2014 12:04:53 -0700 +Subject: [PATCH] cpu: microcode: remove failures when kernel does not have + newer version (LP: #1322534) + +New systems usually have new microcode than kernel does, and +therefore reporting failures is not correct. This patch changes +it to report skipped when kernel does not have microcode updates. + +Signed-off-by: Alex Hung +Acked-by: Colin Ian King +Acked-by: Ivan Hu +--- + src/cpu/microcode/microcode.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/src/cpu/microcode/microcode.c b/src/cpu/microcode/microcode.c +index bf0dd928b6d9..d49316892cd8 100644 +--- a/src/cpu/microcode/microcode.c ++++ b/src/cpu/microcode/microcode.c +@@ -230,13 +230,10 @@ static int microcode_test1(fwts_framework *fw) + } + + /* +- * We found the old revision but not a +- * new revsion, failed ++ * Kernel does not have newer version than BIOS + */ + if (info->new_revision == UNKNOWN) { +- failed++; +- fwts_failed(fw, LOG_LEVEL_MEDIUM, "MicrocodeNotUpdated", +- "The kernel did not report that CPU %d has had a microcode update. " ++ fwts_log_info(fw, "The kernel did not report that CPU %d has had a microcode update. " + "The current firmware is revision 0x%x and probably has not been updated.", + cpu, info->old_revision); + continue; +-- +1.9.3 + diff --git a/meta-luv/recipes-core/fwts/fwts/0007-securebootcert-report-info-instead-of-failure-for-mi.patch b/meta-luv/recipes-core/fwts/fwts/0007-securebootcert-report-info-instead-of-failure-for-mi.patch new file mode 100644 index 00000000000..a7739a1c344 --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0007-securebootcert-report-info-instead-of-failure-for-mi.patch @@ -0,0 +1,68 @@ +From 0a6240d2d3c1dce6b6e156b3d4c92da44442c2cf Mon Sep 17 00:00:00 2001 +From: Ivan Hu +Date: Mon, 29 Sep 2014 13:33:09 +0800 +Subject: [PATCH] securebootcert: report info instead of failure for missing DB + and KEK when secureboot disabled (LP: #1374351 ) + +When secureboot enabled, it's obverious that something wrong with missing DB and +KEK variables, failures will be report. When the secureboot disabled and missing +DB and KEK variables, report the information that the machine is not in +readiness for secureboot. + +Signed-off-by: Ivan Hu +Acked-by: Alex Hung +Acked-by: Colin Ian King +--- + src/uefi/securebootcert/securebootcert.c | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +diff --git a/src/uefi/securebootcert/securebootcert.c b/src/uefi/securebootcert/securebootcert.c +index 53d9e1387759..4fd6cefe956f 100644 +--- a/src/uefi/securebootcert/securebootcert.c ++++ b/src/uefi/securebootcert/securebootcert.c +@@ -62,6 +62,7 @@ typedef struct _EFI_SIGNATURE_LIST { + } + + static uint8_t var_found; ++static bool securebooted = false; + + static bool compare_guid(EFI_GUID *guid1, uint8_t *guid2) + { +@@ -118,6 +119,8 @@ static void securebootcert_secure_boot(fwts_framework *fw, fwts_uefi_var *var, c + "The secure boot variable data invalid."); + return; + } ++ if (value == 1) ++ securebooted = true; + fwts_log_info_verbatum(fw, " Value: 0x%2.2x%s.", value, mode); + fwts_passed(fw, "Secure boot relative variable %s check passed.", varname); + } +@@ -359,12 +362,19 @@ static int securebootcert_test1(fwts_framework *fw) + if (!(var_found & VAR_SETUPMODE_FOUND)) + fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", + "The secure boot variable SetupMode not found."); +- if (!(var_found & VAR_DB_FOUND)) +- fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", +- "The secure boot variable DB not found."); +- if (!(var_found & VAR_KEK_FOUND)) +- fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", +- "The secure boot variable KEK not found."); ++ if (securebooted) { ++ if (!(var_found & VAR_DB_FOUND)) ++ fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", ++ "The secure boot variable DB not found."); ++ if (!(var_found & VAR_KEK_FOUND)) ++ fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", ++ "The secure boot variable KEK not found."); ++ } else { ++ if (!(var_found & VAR_DB_FOUND)) ++ fwts_log_info(fw, "Not in readiness for secureboot, variable DB not found."); ++ if (!(var_found & VAR_KEK_FOUND)) ++ fwts_log_info(fw, "Not in readiness for secureboot, variable KEK not found."); ++ } + + fwts_uefi_free_variable_names(&name_list); + +-- +1.9.3 + diff --git a/meta-luv/recipes-core/fwts/fwts/0008-efi_runtime-Don-t-use-get_user-on-non-pointer.patch b/meta-luv/recipes-core/fwts/fwts/0008-efi_runtime-Don-t-use-get_user-on-non-pointer.patch new file mode 100644 index 00000000000..1bdd4c5c550 --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/0008-efi_runtime-Don-t-use-get_user-on-non-pointer.patch @@ -0,0 +1,34 @@ +From 690bee3feb9a4bb290f62255483a646b9aa7b23b Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Mon, 6 Oct 2014 14:09:10 +0100 +Subject: [PATCH] efi_runtime: Don't use get_user() on non-pointer + +We don't need to try to construct a pointer from a structure on the +stack in order to use get_user(). We can just access it directly. + +This fixes an efi_runtime_set_waketime() failure, introduced with commit +"fwts: Copied the structure from userland locally in kernel space". + +Signed-off-by: Matt Fleming +--- + efi_runtime/efi_runtime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c +index 249f2619ca23..7332d6b090eb 100644 +--- a/efi_runtime/efi_runtime.c ++++ b/efi_runtime/efi_runtime.c +@@ -397,8 +397,8 @@ static long efi_runtime_set_waketime(unsigned long arg) + if (copy_from_user(&psetwakeuptime_local, psetwakeuptime, sizeof(psetwakeuptime_local))) + return -EFAULT; + +- if (get_user(enabled, &(psetwakeuptime_local.Enabled)) || +- copy_from_user(&efi_time, psetwakeuptime_local.Time, sizeof(EFI_TIME))) ++ enabled = psetwakeuptime_local.Enabled; ++ if (copy_from_user(&efi_time, psetwakeuptime_local.Time, sizeof(EFI_TIME))) + return -EFAULT; + + convert_to_efi_time(&eft, &efi_time); +-- +1.9.3 + diff --git a/meta-luv/recipes-core/fwts/fwts/luv-parser-fwts b/meta-luv/recipes-core/fwts/fwts/luv-parser-fwts new file mode 100644 index 00000000000..64a96c38561 --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts/luv-parser-fwts @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Parse the output of fwts and write a luv-test-manager compatible log +# to stdout. + +# - cut out blank lines +# - strip the summary at the end, it's duplicate info +# - only include info about test passes/fails, etc +# - print in luv-test-manager format + +awk '!/^summary/ && !/^fwts/ && /\;SUM.*passed|\;INF/ { + if ($2 == ";SUM") { + printf ("1.0 fwts %s RESULT %d %d %d %d\n", + $1, $3, $5, $7, $9); + fflush(""); + } else if ($2 == ";INF") { + printf ("1.0 fwts %s INFO %s\n", $1, substr($0, index($0, $8))); + fflush(""); + } +}' diff --git a/meta-luv/recipes-core/fwts/fwts_git.bb b/meta-luv/recipes-core/fwts/fwts_git.bb new file mode 100644 index 00000000000..05dd235c5c2 --- /dev/null +++ b/meta-luv/recipes-core/fwts/fwts_git.bb @@ -0,0 +1,64 @@ +SUMMARY = "Firmware testsuite" +DESCRIPTION = "The tool fwts comprises of tests that are designed to exercise BIOS, these need access to read BIOS data and ACPI tables" +HOMEPAGE = "https://wiki.ubuntu.com/Kernel/Reference/fwts" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=16;md5=deb8af5388e838d133eaa036f4d1496f" + +PV = "14.03.01+git${SRCPV}" + +SRCREV = "8ec44dc1e55ecf334f4afa8eed8795ed5776c396" +SRC_URI = "git://kernel.ubuntu.com/hwe/fwts.git \ + file://luv-parser-fwts \ + file://0001-efi_runtime-Set-default-value-for-KVER.patch \ + file://0002-efi_runtime-Refactor-ioctl-code-into-helper-function.patch \ + file://0003-efi_runtime-Group-kernel-version-dependent-functions.patch \ + file://0004-efi_runtime-Do-not-pass-user-addresses-to-firmware.patch \ + file://0005-efi_runtime-donot-dereference-user-address.patch \ + file://0006-cpu-microcode-remove-failures-when-kernel-does-not-h.patch \ + file://0007-securebootcert-report-info-instead-of-failure-for-mi.patch \ + file://0008-efi_runtime-Don-t-use-get_user-on-non-pointer.patch \ + " + +S = "${WORKDIR}/git" +DEPENDS = "autoconf automake libtool libpcre libjson flex bison \ + virtual/kernel " + +inherit autotools luv-test module-base + +do_unpack[depends] += "virtual/kernel:do_populate_sysroot" + +do_compile_append() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ + KERNEL_SRC=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" -C ${STAGING_KERNEL_DIR} \ + scripts + + oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \ + KERNEL_SRC=${STAGING_KERNEL_DIR} \ + KERNEL_VERSION=${KERNEL_VERSION} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" -C ${STAGING_KERNEL_DIR} \ + M="${S}/efi_runtime" \ + modules +} + +do_install_append() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" \ + KERNEL_SRC=${STAGING_KERNEL_DIR} \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + -C ${STAGING_KERNEL_DIR} \ + M="${S}/efi_runtime" \ + modules_install +} + +LUV_TEST_LOG_PARSER="luv-parser-fwts" +LUV_TEST_ARGS="-r stdout -q --uefi --log-filter='SUM,INF' \ + --log-format='%owner;%field ' --batch" + +FILES_${PN} += "${libdir}/fwts/lib*${SOLIBS}" +FILES_${PN} += "/lib/modules/${KERNEL_VERSION}/extra/efi_runtime.ko" +FILES_${PN}-dev += "${libdir}/fwts/lib*${SOLIBSDEV} ${libdir}/fwts/lib*.la" diff --git a/meta-luv/recipes-core/images/core-image-efi-initramfs.bb b/meta-luv/recipes-core/images/core-image-efi-initramfs.bb new file mode 100644 index 00000000000..a1e2aa14fdf --- /dev/null +++ b/meta-luv/recipes-core/images/core-image-efi-initramfs.bb @@ -0,0 +1,26 @@ +# initramfs image for the EFI test suite +DESCRIPTION = "Small image capable of booting a device and running the suite of \ +EFI tests." + +IMAGE_INSTALL = "\ + base-files base-passwd netbase udev sysvinit initscripts keymaps \ + kernel-image fwts bash coreutils gawk grep util-linux-agetty \ + util-linux-mount util-linux-umount kmod sed tar net-tools \ + shadow util-linux procps efivarfs-test \ + psplash kexec vmcore-dmesg kernel-efi-warnings bits \ + " + +export IMAGE_BASENAME = "core-image-efi-initramfs" + +IMAGE_LINGUAS = "" + +LICENSE = "MIT" + +IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" +inherit core-image + +IMAGE_ROOTFS_SIZE = "8192" + +BAD_RECOMMENDATIONS += "busybox-syslog" + + diff --git a/meta-luv/recipes-core/images/core-image-efi.bb b/meta-luv/recipes-core/images/core-image-efi.bb new file mode 100644 index 00000000000..418ed7e8752 --- /dev/null +++ b/meta-luv/recipes-core/images/core-image-efi.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "A minimal image with essential EFI and kernel tools" + +IMAGE_INSTALL = "\ + base-files base-passwd netbase udev sysvinit initscripts keymaps \ + kexec-tools kernel-image fwts bash coreutils gawk grep util-linux-agetty \ + util-linux-mount util-linux-umount kmod sed tar net-tools \ + shadow util-linux procps " + +inherit core-image + +IMAGE_ROOTFS_SIZE = "8192" diff --git a/meta-luv/recipes-core/images/luv-live-image.bb b/meta-luv/recipes-core/images/luv-live-image.bb new file mode 100644 index 00000000000..c10c0e6788e --- /dev/null +++ b/meta-luv/recipes-core/images/luv-live-image.bb @@ -0,0 +1,86 @@ +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" + +DEPENDS_${PN} = "grub-efi bits" + +HDDDIR = "${S}/hddimg" +HDDIMG_ID = "423cc2c8" +LABELS = "luv" + +INITRD_IMAGE = "core-image-efi-initramfs" +INITRD = "${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE}-${MACHINE}.cpio.gz" +MACHINE_FEATURES += "efi" +APPEND = "crashkernel=256M console=ttyS0,115200 console=ttyPCH0,115200" + +SPLASH_IMAGE = "blue-luv.jpg" + +GRUB_TIMEOUT = "2" + +inherit bootimg + +SRC_URI = "file://blue-luv.jpg" + +build_img() { + IMG="${DEPLOY_DIR_IMAGE}/${PN}.img" + VFAT="${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg" + + # Parameters of the vfat partition for test results + # Sectors: 512 bytes + # Blocks: 1024 bytes + VFAT_RESULTS=${DEPLOY_DIR_IMAGE}/${PN}-results.hddimg + # 8MB of space for test results + VFAT_RESULTS_SPACE=8388608 + VFAT_RESULTS_BLOCKS=$(expr $VFAT_RESULTS_SPACE / 1024) + # TODO: do we need to dynamically generate the UUID? + # For now, every time this UUID changes, the file etc/init.d/luv-test-manager + # needs to be updated accordingly. + VFAT_RESULTS_UUID=05d61523 + VFAT_RESULTS_LABEL="luv-results" + + mkdosfs -C ${VFAT_RESULTS} -S 512 -i ${VFAT_RESULTS_UUID} \ + -n ${VFAT_RESULTS_LABEL} $VFAT_RESULTS_BLOCKS + + dd if=/dev/zero of=$IMG bs=512 count=1 + + VFAT_SIZE=$(du -L --apparent-size -bs $VFAT | cut -f 1) + VFAT_RESULTS_SIZE=$(du -L --apparent-size -bs $VFAT_RESULTS | cut -f 1) + + IMG_SIZE=$(expr $VFAT_SIZE + $VFAT_RESULTS_SIZE + 512) + + dd if=/dev/zero of=$IMG bs=1 seek=$IMG_SIZE count=0 + + parted $IMG mklabel msdos + + parted $IMG mkpart primary fat32 0% "${VFAT_RESULTS_SIZE}B" + + # start second partition on the first sector after the first partition + parted $IMG mkpart primary fat32 "$(expr $VFAT_RESULTS_SIZE + 512)B" \ + "$(expr $VFAT_SIZE + $VFAT_RESULTS_SIZE)B" + + parted $IMG set 2 boot on + + # Mark the second partition OSType field as EFI System Partition as + # specified in the UEFI specification. + fdisk $IMG< $FIFO + fi +} + +runl=`runlevel` +# If we are in runlevel 5, we are on a regular boot and we only have to +# prepare everything in case there is a kernel crash in the future. +if [[ $runl == *5* ]]; then + # Not all disks may be ready to mount at this moment. + # Thus, we need to wait for them. + psplash_write "MSG Preparing crash handler..." + for n in 0 25 50 75 100 + do + psplash_write "PROGRESS $n" + sleep 1 + done + + LUV_BOOT_PARTITION=/mnt/boot/ + LUV_BOOT_PARTITION_UUID=423C-C2C8 + LUV_DISK_DEVICE=/dev/disk/by-uuid/${LUV_BOOT_PARTITION_UUID} + + mkdir -p ${LUV_BOOT_PARTITION} + if [ $? -eq 0 ]; then + mount ${LUV_DISK_DEVICE} ${LUV_BOOT_PARTITION} + if [ $? -eq 0 ]; then + kexec -p --initrd=${LUV_BOOT_PARTITION}initrd --append="noluv 3 \ + irqpoll maxcpus=1 reset_devices" ${LUV_BOOT_PARTITION}vmlinuz + umount ${LUV_BOOT_PARTITION} + fi + fi +fi + +# If we are in runlevel 3, we just recovered from a crash. We need to dump +# the /proc/vmcore file. +if [[ $runl == *3* ]]; then + + LUV_STORAGE=/mnt/luv-storage/ + LUV_PARTITION_UUID=05D6-1523 + LUV_DISK_DEVICE=/dev/disk/by-uuid/${LUV_PARTITION_UUID} + LUV_DEBUG_DIR=${LUV_STORAGE}luv-debug/ + LUV_DEBUG_FILE=luv-debug.log + LUV_README_FILE=README.txt + + LUV_DEBUG_README=" + Oops. It looks like the system crashed while running the tests. We can + help to determine what went wrong. Along with this file, you will see a + ${LUV_DEBUG_FILE} file. Please report your crash to luv@lists.01.org or + submit a bug report on https://github.com/01org/luv-yocto/issues. In either + case, please submit the contents of ${LUV_DEBUG_FILE}." + + psplash_write "MSG Recovery Boot. Saving debug info..." + + mkdir -p ${LUV_STORAGE} + if [ $? -eq 0 ]; then + + mount ${LUV_DISK_DEVICE} ${LUV_STORAGE} + if [ $? -eq 0 ]; then + + mkdir -p ${LUV_DEBUG_DIR} + if [ $? -eq 0 ]; then + vmcore-dmesg /proc/vmcore > ${LUV_DEBUG_DIR}${LUV_DEBUG_FILE} + echo ${LUV_DEBUG_README} > ${LUV_DEBUG_DIR}${LUV_README_FILE} + fi + fi + fi + + if [ -f ${LUV_DEBUG_DIR}${LUV_DEBUG_FILE} ]; then + psplash_write "MSG Recovery boot. Debug info saved on your non-volatile media. + You may safely remove it." + else + psplash_write "MSG Recovery boot. Could not save debug info." + fi + + mountpoint -q ${LUV_STORAGE} + [ $? -eq 0 ] && umount ${LUV_STORAGE} + + psplash_write "DONE" + + # umount to prevent rc from quitting psplash + umount -l /mnt/.psplash + +fi diff --git a/meta-luv/recipes-core/initscripts/initscripts/luv-test-manager b/meta-luv/recipes-core/initscripts/initscripts/luv-test-manager new file mode 100644 index 00000000000..e5de98d4e72 --- /dev/null +++ b/meta-luv/recipes-core/initscripts/initscripts/luv-test-manager @@ -0,0 +1,138 @@ +# +# Copyright 2014 Intel Corporation; author Matt Fleming +# + +grep -q noluv /proc/cmdline +if [ $? -ne 1 ]; then + exit 0 +fi + +FIFO="/mnt/.psplash/psplash_fifo" +psplash_write() { + if [ -e $FIFO ]; then + echo $1 > $FIFO + fi +} + +# Save test results to a disk. In order to reliable identify the +# correct partition, mount using the disk's UUID. If the partition +# cannot be mounted, test results are not saved. + +LUV_SAVE_RAW_DIR=/dev/null +LUV_SAVE_PARSED_DIR=/dev/null +LUV_SAVE_RESULTS_DIR=/dev/null + +LUV_STORAGE=/mnt/luv-storage/ +LUV_PARTITION_UUID=05D6-1523 +LUV_DISK_DEVICE=/dev/disk/by-uuid/${LUV_PARTITION_UUID} + +mkdir -p ${LUV_STORAGE} +if [ $? -eq 0 ]; then + mount ${LUV_DISK_DEVICE} ${LUV_STORAGE} + if [ $? -eq 0 ]; then + LUV_SAVE_RESULTS_DIR=${LUV_STORAGE}luv-results/ + + mkdir -p ${LUV_SAVE_RESULTS_DIR}raw/ + [ $? -eq 0 ] && LUV_SAVE_RAW_DIR=${LUV_SAVE_RESULTS_DIR}raw/ + + mkdir -p ${LUV_SAVE_RESULTS_DIR}parsed/ + [ $? -eq 0 ] && LUV_SAVE_PARSED_DIR=${LUV_SAVE_RESULTS_DIR}parsed + fi +fi + +LUV_EFI_UUID=423C-C2C8 +LUV_EFI=/mnt/luv-efi/ + +mkdir -p ${LUV_EFI} +if [ $? -eq 0 ]; then + mount /dev/disk/by-uuid/${LUV_EFI_UUID} ${LUV_EFI} +fi + +psplash_write "MSG Running tests..." + +luv_version=$(cut -d\\ -f1 /etc/issue) + +cat < /tmp/luv.results +$luv_version + +Test results summary: + +EOF + +runner_list=`ls -A ${LUV_TESTS_DIR}` + +progress_step="$((100/$(echo $runner_list | wc -w)))" +for r in $runner_list; do + runner="${LUV_TESTS_DIR}$r" + + [ -f "$runner" ] || continue + + psplash_write "PROGRESS $progress_step" + psplash_write "MSG Running $r" + + parser="${LUV_PARSER_DIR}/$r" + [ -e ${parser} ] || { + parser="/bin/cat" + } + + $runner | tee ${LUV_LOG_DIR}/$r | tee ${LUV_SAVE_RAW_DIR}/$r | $parser | \ + tee ${LUV_SAVE_PARSED_DIR}/$r | ${LUV_PARSER_DIR}/test-manager | \ + tee /dev/console | \ + tee -a /tmp/luv.results | tee -a ${LUV_SAVE_RESULTS_DIR}/luv.results + sync +done | awk '/ \[\+/ { units += 1 } + / \[\-/ { suites += 1 } + /pass/ { passes += 1 } + /fail/ { fails += $3 } + /skip/ { skips += 1 } + END { + printf("\nRan %d testsuites and %d unittests, %d passes, %d fails, %d skipped.\n", suites, units, passes, fails, skips) + }' | tee -a /tmp/luv.results | tee -a ${LUV_SAVE_RESULTS_DIR}/luv.results + +mountpoint -q ${LUV_EFI} +if [ $? -eq 0 ]; then + umount ${LUV_EFI} +fi + +mountpoint -q ${LUV_STORAGE} +if [ $? -eq 0 ]; then + umount ${LUV_STORAGE} + SAVE_STATUS="Results were saved in your boot media. You may now turn off the system and remove it." +else + SAVE_STATUS="Results were not saved in storage media." +fi + +[ -e $FIFO ] && { + echo "DONE" > $FIFO + grep "Ran" /tmp/luv.results | awk '{printf "MSG %s\n%s\n", $0, "'"$SAVE_STATUS"'"}' > $FIFO + + umount -l /mnt/.psplash +} diff --git a/meta-luv/recipes-core/initscripts/initscripts/luv-test-parser b/meta-luv/recipes-core/initscripts/initscripts/luv-test-parser new file mode 100644 index 00000000000..6fa486dc3fa --- /dev/null +++ b/meta-luv/recipes-core/initscripts/initscripts/luv-test-parser @@ -0,0 +1,68 @@ +#!/bin/sh +# +# Copyright (C) 2014 Intel Corporation; author Matt Fleming +# +# The schema for the luv test manager looks like this, +# +# +# +# where and are one of, +# +# ::= RESULT +# | INFO +# +# This is the format that all data on stdin must have. + +awk ' + +# +# This is the only schema version we support. +# +/^1.0/ { + if (!b) { + b = 1; + printf (" [-] %s\n", $2); + fflush(""); + } + + # New test? + if (!tests[$3]) { + tests[$3] = 1; + printf(" [+] %s... ", $3); + fflush(""); + } + + # + # Parse tags + # + if ($4 == "RESULT") { + passes=$5 + fails=$6 + aborts=$7 + skips=$8 + + # + # Instead of reporting all results to the user lets only + # report the most urgent/highest priority result. + # + # Failures are obviously bad and we report them above + # everything else. + # + # Skips/aborts are not necesarily serious but rather + # indicate potential gaps in the testing coverage (or + # maybe we ran tests that are not supported by the + # hardware). Only report if the entire unittest was + # skipped/aborted. + # + # Passes indicate everything is fine. + if (fails > 0) + printf("%d failures!\n", fails); + else if ((aborts > 0 || skips > 0) && !passes) + printf("skipped\n"); + else + printf("passed\n"); + fflush(""); + } else if ($4 == "INFO") { + # Do nothing for now. + } +}' diff --git a/meta-luv/recipes-core/initscripts/initscripts_1.0.bbappend b/meta-luv/recipes-core/initscripts/initscripts_1.0.bbappend new file mode 100644 index 00000000000..871fadb3e48 --- /dev/null +++ b/meta-luv/recipes-core/initscripts/initscripts_1.0.bbappend @@ -0,0 +1,22 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://luv-test-manager file://luv-test-parser \ + file://luv-crash-handler" + +do_install_append() { + install -m 755 ${WORKDIR}/luv-test-manager ${D}${sysconfdir}/init.d/ + + # Create runlevel link + update-rc.d -r ${D} luv-test-manager start 99 5 . + + install -d ${D}${sysconfdir}/luv/tests + install -d ${D}${sysconfdir}/luv/parsers + + install -m 755 ${WORKDIR}/luv-test-parser \ + ${D}${sysconfdir}/luv/parsers/test-manager + + install -m 755 ${WORKDIR}/luv-crash-handler ${D}${sysconfdir}/init.d/ + + # Create runlevel link for the crash handler + update-rc.d -r ${D} luv-crash-handler start 98 3 5 . +} diff --git a/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings/kernel-efi-warnings b/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings/kernel-efi-warnings new file mode 100644 index 00000000000..620781a4d31 --- /dev/null +++ b/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings/kernel-efi-warnings @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Copyright 2014 Intel Corporation; author Ricardo Neri +# +# This script analyzes the dmesg buffer looking for messages generated by the +# kernel that might indicate that it has found potential UEFI firmware bugs. + +# First, check if the dmesg buffer is complete + +dmesg | grep -q "Linux version" +if [ $? -ne 0 ]; then + echo "Warning: Dmesg buffer may have been wrapped around" +fi + + +# Check if the kernel had to fixup page faults caused by the firmware accessing +# BOOT_SERVICES_DATA/CODE memory regions after ExitBootServices() has been called +# kernel message we use to find the illegal accesses: +# efi: Fixing illegal access to BOOT_SERVICES_*. Bug in EFI firmware? + +echo "Test: EFI_BOOT_SERVICES_*_illegal_access" +echo "Description: Check for illegal accesses to BOOT_SERVICES_* memory regions" +dmesg | grep -q "efi: Fixing illegal access to BOOT_SERVICES_\*. Bug in EFI firmware?" +if [ $? -eq 0 ]; then + echo "FAIL: Found illegal accesses to BOOT_SERVICES_* memory" +else + echo "PASS: No illegal access to BOOT_SERVICES_* memory detected" +fi diff --git a/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings/luv-parser-kernel-efi-warnings b/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings/luv-parser-kernel-efi-warnings new file mode 100644 index 00000000000..c38442b0228 --- /dev/null +++ b/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings/luv-parser-kernel-efi-warnings @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Parse the output of kernel-efi-warnings and write a luv-test-manager +# compatible log to stdout. +awk '/Test:/ { + test=$2 + printf ("1.0 kernel-efi-warnings %s INFO\n", test); + fflush(""); + } + + /PASS/ { + printf ("1.0 kernel-efi-warnings %s RESULT 1 0 0 0\n", test); + fflush(""); + } + + /FAIL/ { + printf ("1.0 kernel-efi-warnings %s RESULT 0 1 0 0\n", test); + fflush(""); + } +' diff --git a/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings_0.1.bb b/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings_0.1.bb new file mode 100644 index 00000000000..f792b61f01f --- /dev/null +++ b/meta-luv/recipes-core/kernel_efi_warnings/kernel-efi-warnings_0.1.bb @@ -0,0 +1,22 @@ +SUMMARY = "Kernel warnings for potential UEFI firmware bugs" +DESCRIPTION = "Simple tool to look for warnings generated by the Linux kernel \ +when it finds potential UEFI firmware bugs" +HOMEPAGE = "https://www.kernel.org/pub/linux/kernel" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://kernel-efi-warnings \ + file://luv-parser-kernel-efi-warnings \ + " +DEPENDS = "grep" + +inherit luv-test + +do_install() { + install -d ${D}${bindir} + install -m 755 ${WORKDIR}/kernel-efi-warnings ${D}${bindir} +} + +LUV_TEST_LOG_PARSER="luv-parser-kernel-efi-warnings" +LUV_TEST="kernel-efi-warnings" +LUV_TEST_ARGS="" diff --git a/meta-luv/recipes-core/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch b/meta-luv/recipes-core/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch new file mode 100644 index 00000000000..c0cc6333401 --- /dev/null +++ b/meta-luv/recipes-core/ovmf/ovmf/0001-BaseTools-Force-tools-variables-to-host-toolchain.patch @@ -0,0 +1,48 @@ +From 6e24bde1979c2d7149b37d142fb882dfde0e9770 Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Fri, 27 Jun 2014 11:12:18 +0100 +Subject: [PATCH] BaseTools: Force tools variables to host toolchain + +Signed-off-by: Matt Fleming +--- + BaseTools/Source/C/Makefiles/app.makefile | 7 +++++++ + BaseTools/Source/C/VfrCompile/GNUmakefile | 5 +++++ + 2 files changed, 12 insertions(+) + +diff --git a/BaseTools/Source/C/Makefiles/app.makefile b/BaseTools/Source/C/Makefiles/app.makefile +index 19269a1..62aad0f 100644 +--- a/BaseTools/Source/C/Makefiles/app.makefile ++++ b/BaseTools/Source/C/Makefiles/app.makefile +@@ -16,6 +16,13 @@ include $(MAKEROOT)/Makefiles/header.makefile + + APPLICATION = $(MAKEROOT)/bin/$(APPNAME) + ++CC = gcc ++CXX = g++ ++AS = gcc ++AR = ar ++LD = ld ++LINKER = $(CC) ++ + .PHONY:all + all: $(MAKEROOT)/bin $(APPLICATION) + +diff --git a/BaseTools/Source/C/VfrCompile/GNUmakefile b/BaseTools/Source/C/VfrCompile/GNUmakefile +index 82005e1..5ac5f7e 100644 +--- a/BaseTools/Source/C/VfrCompile/GNUmakefile ++++ b/BaseTools/Source/C/VfrCompile/GNUmakefile +@@ -26,6 +26,11 @@ OBJECTS = AParser.o DLexerBase.o ATokenBuffer.o EfiVfrParser.o VfrLexer.o VfrSyn + + VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS) + ++CC = gcc ++CXX = g++ ++AS = gcc ++AR = ar ++LD = ld + LINKER = $(CXX) + + EXTRA_CLEAN_OBJECTS = EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h VfrLexer.cpp VfrLexer.h VfrSyntax.cpp tokens.h +-- +1.9.0 + diff --git a/meta-luv/recipes-core/ovmf/ovmf_git.bb b/meta-luv/recipes-core/ovmf/ovmf_git.bb new file mode 100644 index 00000000000..7afd69581e8 --- /dev/null +++ b/meta-luv/recipes-core/ovmf/ovmf_git.bb @@ -0,0 +1,59 @@ +DESCRIPTION = "OVMF - UEFI firmware for Qemu and KVM" +HOMEPAGE = "http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://OvmfPkg/License.txt;md5=ffd52cf9a8e0e036b9a61a0de2dc87ed" + +SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \ + file://0001-BaseTools-Force-tools-variables-to-host-toolchain.patch" + +SRCREV="dc4ad1532e59fd1a185d6b90d1c2a92cf8713f40" + +S = "${WORKDIR}/git" + +DEPENDS="util-linux-native iasl-native" + +# OVMF has trouble building with the default optimization of -O2. +BUILD_OPTIMIZATION="-pipe" + +# OVMF supports IA only, although it could conceivably support ARM someday. +COMPATIBLE_HOST='(i.86|x86_64).*' + +do_patch_append() { + bb.build.exec_func('do_fix_iasl', d) + bb.build.exec_func('do_fix_toolchain', d) +} + +do_fix_iasl() { + sed -i -e 's#/usr/bin/iasl#${STAGING_BINDIR_NATIVE}/iasl#' ${S}/BaseTools/Conf/tools_def.template +} + +do_fix_toolchain(){ + sed -i -e 's#DEF(ELFGCC_BIN)/#${TARGET_PREFIX}#' ${S}/BaseTools/Conf/tools_def.template + sed -i -e 's#DEF(GCC.*PREFIX)#${TARGET_PREFIX}#' ${S}/BaseTools/Conf/tools_def.template + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nLFLAGS += ${BUILD_LDFLAGS}#" ${S}/BaseTools/Source/C/Makefiles/app.makefile + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nCFLAGS += ${BUILD_CFLAGS}#" ${S}/BaseTools/Source/C/Makefiles/app.makefile + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nLFLAGS += ${BUILD_LDFLAGS}#" ${S}/BaseTools/Source/C/VfrCompile/GNUmakefile + sed -i -e "s#^LINKER\(.*\)#LINKER\1\nCFLAGS += ${BUILD_CFLAGS}#" ${S}/BaseTools/Source/C/VfrCompile/GNUmakefile +} + +GCC_VER="$(${CC} -v 2>&1 | tail -n1 | awk '{print $3}' | awk -F. '{print $1$2}')" + +do_compile() { + export LFLAGS="${LDFLAGS}" + OVMF_ARCH="X64" + if [ "${TARGET_ARCH}" != "x86_64" ] ; then + OVMF_ARCH="IA32" + fi + ${S}/OvmfPkg/build.sh -a $OVMF_ARCH -b RELEASE -t GCC${GCC_VER} +} + +do_install() { + OVMF_DIR_SUFFIX="X64" + if [ "${TARGET_ARCH}" != "x86_64" ] ; then + OVMF_DIR_SUFFIX="Ia32" # Note the different capitalization + fi + install -d ${D}${datadir}/ovmf + build_dir="${S}/Build/Ovmf$OVMF_DIR_SUFFIX/RELEASE_GCC${GCC_VER}" + install -m 0755 ${build_dir}/FV/OVMF.fd \ + ${D}${datadir}/ovmf/bios.bin +} diff --git a/meta-luv/recipes-core/psplash/files/0001-Add-luv-color-background.patch b/meta-luv/recipes-core/psplash/files/0001-Add-luv-color-background.patch new file mode 100644 index 00000000000..e48d64973f6 --- /dev/null +++ b/meta-luv/recipes-core/psplash/files/0001-Add-luv-color-background.patch @@ -0,0 +1,37 @@ +From ed6c9112ee48c7cc8b1f6f737c6c7b1ce38b11a6 Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Fri, 9 May 2014 12:01:37 +0100 +Subject: [PATCH] Add luv color background + +Signed-off-by: Matt Fleming +--- + psplash-colors.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/psplash-colors.h b/psplash-colors.h +index d701089..ea3b529 100644 +--- a/psplash-colors.h ++++ b/psplash-colors.h +@@ -20,15 +20,15 @@ + #define _HAVE_PSPLASH_COLORS_H + + /* This is the overall background color */ +-#define PSPLASH_BACKGROUND_COLOR 0xec,0xec,0xe1 ++#define PSPLASH_BACKGROUND_COLOR 0x17,0x71,0xb7 + + /* This is the color of any text output */ +-#define PSPLASH_TEXT_COLOR 0x6d,0x6d,0x70 ++#define PSPLASH_TEXT_COLOR 0xff,0xff,0xff + + /* This is the color of the progress bar indicator */ +-#define PSPLASH_BAR_COLOR 0x6d,0x6d,0x70 ++#define PSPLASH_BAR_COLOR 0xf2,0x73,0x51 + + /* This is the color of the progress bar background */ +-#define PSPLASH_BAR_BACKGROUND_COLOR 0xec,0xec,0xe1 ++#define PSPLASH_BAR_BACKGROUND_COLOR 0xff,0xff,0xff + + #endif +-- +1.9.0 + diff --git a/meta-luv/recipes-core/psplash/files/0001-add-done-command.patch b/meta-luv/recipes-core/psplash/files/0001-add-done-command.patch new file mode 100644 index 00000000000..76d407b936b --- /dev/null +++ b/meta-luv/recipes-core/psplash/files/0001-add-done-command.patch @@ -0,0 +1,50 @@ +From 6bfe2943eb5194dfd1829670d4c45e7c97a7aedf Mon Sep 17 00:00:00 2001 +From: Matt Fleming +Date: Fri, 9 May 2014 14:53:09 +0100 +Subject: [PATCH] add done command + +--- + psplash.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/psplash.c b/psplash.c +index 09cf0d0..b7eeafe 100644 +--- a/psplash.c ++++ b/psplash.c +@@ -121,6 +121,17 @@ parse_command (PSplashFB *fb, char *string, int length) + { + return 1; + } ++ else if (!strcmp(command,"DONE")) ++ { ++ int x, y; ++ ++ x = (fb->width - BAR_IMG_WIDTH)/2; ++ y= fb->height - (fb->height/6); ++ psplash_fb_draw_rect (fb, x, y, x+BAR_IMG_WIDTH, y+BAR_IMG_HEIGHT, ++ PSPLASH_BACKGROUND_COLOR); ++ ++ ++ } + + return 0; + } +@@ -277,6 +288,7 @@ main (int argc, char** argv) + POKY_IMG_RLE_PIXEL_DATA); + + /* Draw progress bar border */ ++#if 0 + psplash_fb_draw_image (fb, + (fb->width - BAR_IMG_WIDTH)/2, + fb->height - (fb->height/6), +@@ -284,6 +296,7 @@ main (int argc, char** argv) + BAR_IMG_HEIGHT, + BAR_IMG_BYTES_PER_PIXEL, + BAR_IMG_RLE_PIXEL_DATA); ++#endif + + psplash_draw_progress (fb, 0); + +-- +1.9.0 + diff --git a/meta-luv/recipes-core/psplash/files/luv-splash.png b/meta-luv/recipes-core/psplash/files/luv-splash.png new file mode 100644 index 00000000000..70bca940dae Binary files /dev/null and b/meta-luv/recipes-core/psplash/files/luv-splash.png differ diff --git a/meta-luv/recipes-core/psplash/psplash_git.bbappend b/meta-luv/recipes-core/psplash/psplash_git.bbappend new file mode 100644 index 00000000000..cd497bf869b --- /dev/null +++ b/meta-luv/recipes-core/psplash/psplash_git.bbappend @@ -0,0 +1,6 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI += "file://0001-Add-luv-color-background.patch \ + file://0001-add-done-command.patch" + +SPLASH_IMAGES = "file://luv-splash.png;outsuffix=default" diff --git a/meta-luv/recipes-core/sysvinit/sysvinit_2.88dsf.bbappend b/meta-luv/recipes-core/sysvinit/sysvinit_2.88dsf.bbappend new file mode 100644 index 00000000000..07870c64acc --- /dev/null +++ b/meta-luv/recipes-core/sysvinit/sysvinit_2.88dsf.bbappend @@ -0,0 +1,21 @@ +FILES_${PN} += "/init" + +do_install () { + oe_runmake 'ROOT=${D}' install + + install -d ${D}${sysconfdir} \ + ${D}${sysconfdir}/default \ + ${D}${sysconfdir}/init.d + for level in S 0 1 2 3 4 5 6; do + install -d ${D}${sysconfdir}/rc$level.d + done + + install -m 0644 ${WORKDIR}/rcS-default ${D}${sysconfdir}/default/rcS + install -m 0755 ${WORKDIR}/rc ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d + + chown root.shutdown ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown + chmod o-x,u+s ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown + + ln -s $(ROOT)${base_sbindir}/init ${D}/init +} diff --git a/meta-luv/recipes-devtools/qemu/qemu_1.5.0.bbappend b/meta-luv/recipes-devtools/qemu/qemu_1.5.0.bbappend new file mode 100644 index 00000000000..abd97d6b082 --- /dev/null +++ b/meta-luv/recipes-devtools/qemu/qemu_1.5.0.bbappend @@ -0,0 +1 @@ +DEPENDS_append_class-native = " ovmf" diff --git a/meta-luv/recipes-devtools/sbsigntool/sbsigntool/disable-man-page-creation.patch b/meta-luv/recipes-devtools/sbsigntool/sbsigntool/disable-man-page-creation.patch new file mode 100644 index 00000000000..ab1bda17120 --- /dev/null +++ b/meta-luv/recipes-devtools/sbsigntool/sbsigntool/disable-man-page-creation.patch @@ -0,0 +1,13 @@ +diff --git a/docs/Makefile.am b/docs/Makefile.am +index 1b5a588..6918dd8 100644 +--- a/docs/Makefile.am ++++ b/docs/Makefile.am +@@ -1,8 +1,4 @@ + +-man1_MANS = sbsign.1 sbverify.1 sbattach.1 sbvarsign.1 sbsiglist.1 +- +-EXTRA_DIST = sbsign.1.in sbverify.1.in sbattach.1.in \ +- sbvarsign.1.in sbsiglist.1.in + CLEANFILES = $(man1_MANS) + + $(builddir)/%.1: $(srcdir)/%.1.in $(top_builddir)/src/% diff --git a/meta-luv/recipes-devtools/sbsigntool/sbsigntool/fix-mixed-implicit-and-normal-rules.patch b/meta-luv/recipes-devtools/sbsigntool/sbsigntool/fix-mixed-implicit-and-normal-rules.patch new file mode 100644 index 00000000000..bf2265b3588 --- /dev/null +++ b/meta-luv/recipes-devtools/sbsigntool/sbsigntool/fix-mixed-implicit-and-normal-rules.patch @@ -0,0 +1,15 @@ +diff --git a/lib/ccan.git/Makefile b/lib/ccan.git/Makefile +index 13aa195..701ad60 100644 +--- a/lib/ccan.git/Makefile ++++ b/lib/ccan.git/Makefile +@@ -82,10 +82,6 @@ $(SCOREDIR)/SUMMARY: $(patsubst ccan/%/_info, $(SCOREDIR)/score-%, $(wildcard cc + $(CC) -v >> $@ + cat $^ | grep 'Total score:' >> $@ + +-$(SCOREDIR)/score-%: ccan/%/_info tools/ccanlint/ccanlint $(OBJFILES) +- mkdir -p $(SCOREDIR) +- tools/ccanlint/ccanlint -v -s ccan/$* > $@ || true +- + $(ALL_DEPENDS): %/.depends: %/_info tools/ccan_depends + tools/ccan_depends $* > $@ || ( rm -f $@; exit 1 ) + diff --git a/meta-luv/recipes-devtools/sbsigntool/sbsigntool_git.bb b/meta-luv/recipes-devtools/sbsigntool/sbsigntool_git.bb new file mode 100644 index 00000000000..e3cde17e03e --- /dev/null +++ b/meta-luv/recipes-devtools/sbsigntool/sbsigntool_git.bb @@ -0,0 +1,41 @@ +SUMMARY = "Signing utility for UEFI secure boot" + +LICENSE = "GPLv3" +LIC_FILES_CHKSUM = "file://LICENSE.GPLv3;md5=9eef91148a9b14ec7f9df333daebc746" + +SRC_URI = "git://kernel.ubuntu.com/jk/sbsigntool \ + file://fix-mixed-implicit-and-normal-rules.patch;apply=0 \ + file://disable-man-page-creation.patch" + +SRCREV="${AUTOREV}" + +inherit autotools pkgconfig + +BBCLASSEXTEND = "native" + +DEPENDS = "binutils openssl gnu-efi util-linux" + +S = "${WORKDIR}/git" + +do_configure_class-native() { + if [ ! -e lib/ccan.git/Makefile ]; then + git submodule init + git submodule update + + patch -p1 -i ../fix-mixed-implicit-and-normal-rules.patch + fi + + OLD_CC="${CC}" + + if [ ! -e lib/ccan ]; then + export CC="${BUILD_CC}" + lib/ccan.git/tools/create-ccan-tree \ + --build-type=automake lib/ccan \ + talloc read_write_all build_assert array_size + fi + + export CC="${OLD_CC}" + export CFLAGS="-I${STAGING_INCDIR}/efi -I${STAGING_INCDIR}/efi/x86_64" + ./autogen.sh --noconfigure + oe_runconf +} diff --git a/meta-luv/recipes-extended/iasl/iasl_20120215.bb b/meta-luv/recipes-extended/iasl/iasl_20120215.bb new file mode 100644 index 00000000000..a14d2ecd6b9 --- /dev/null +++ b/meta-luv/recipes-extended/iasl/iasl_20120215.bb @@ -0,0 +1,27 @@ +DESCRIPTION = "This is a cross development C compiler, assembler and linker environment for the production of 8086 executables (Optionally MSDOS COM)" +HOMEPAGE = "http://www.acpica.org/" +LICENSE = "Intel-ACPI" +LIC_FILES_CHKSUM = "file://asldefine.h;endline=115;md5=d4d7cf809b8b5e03131327b3f718e8f0" +SECTION = "console/tools" +PR="r1" + +DEPENDS="flex-native bison-native" + +SRC_URI="https://acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz" + +SRC_URI[md5sum] = "324c89e5bb9002e2711e0494290ceacc" +SRC_URI[sha256sum] = "b2b497415f29ddbefe7be8b9429b62c1f1f6e1ec11456928e4e7da86578e5b8d" + +S="${WORKDIR}/acpica-unix-${PV}/source/compiler" + +NATIVE_INSTALL_WORKS = "1" +BBCLASSEXTEND = "native" + +do_compile() { + CFLAGS="-Wno-error=redundant-decls" $MAKE +} + +do_install() { + mkdir -p ${D}${prefix}/bin + cp ${S}/iasl ${D}${prefix}/bin +} diff --git a/meta-luv/recipes-kernel/linux/linux-yocto-efi-test/defconfig b/meta-luv/recipes-kernel/linux/linux-yocto-efi-test/defconfig new file mode 100644 index 00000000000..e596f8f0033 --- /dev/null +++ b/meta-luv/recipes-kernel/linux/linux-yocto-efi-test/defconfig @@ -0,0 +1,3555 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 3.15.0 Kernel Configuration +# +CONFIG_64BIT=y +CONFIG_X86_64=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_MMU=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ZONE_DMA32=y +CONFIG_AUDIT_ARCH=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_X86_64_SMP=y +CONFIG_X86_HT=y +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="" +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="-yocto-standard" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_FHANDLE is not set +CONFIG_USELIB=y +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_WATCH=y +CONFIG_AUDIT_TREE=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_BSD_PROCESS_ACCT=y +# CONFIG_BSD_PROCESS_ACCT_V3 is not set +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_PREEMPT_RCU is not set +CONFIG_RCU_STALL_COMMON=y +# CONFIG_RCU_USER_QS is not set +CONFIG_RCU_FANOUT=64 +CONFIG_RCU_FANOUT_LEAF=16 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_FAST_NO_HZ is not set +CONFIG_TREE_RCU_TRACE=y +# CONFIG_RCU_NOCB_CPU is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y +# CONFIG_NUMA_BALANCING is not set +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_FREEZER=y +# CONFIG_CGROUP_DEVICE is not set +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +# CONFIG_MEMCG is not set +# CONFIG_CGROUP_HUGETLB is not set +# CONFIG_CGROUP_PERF is not set +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +# CONFIG_RT_GROUP_SCHED is not set +# CONFIG_BLK_CGROUP is not set +# CONFIG_CHECKPOINT_RESTORE is not set +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +# CONFIG_USER_NS is not set +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_SYSFS_SYSCALL=y +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +# CONFIG_PCSPKR_PLATFORM is not set +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_PCI_QUIRKS=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_SYSTEM_TRUSTED_KEYRING is not set +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +# CONFIG_OPROFILE is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_OPROFILE_NMI_TIMER=y +CONFIG_KPROBES=y +# CONFIG_JUMP_LABEL is not set +CONFIG_OPTPROBES=y +# CONFIG_UPROBES is not set +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CC_STACKPROTECTOR_NONE=y +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +CONFIG_STOP_MACHINE=y +CONFIG_BLOCK=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_CMDLINE_PARSER is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +# CONFIG_LDM_PARTITION is not set +CONFIG_SGI_PARTITION=y +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +CONFIG_BLOCK_COMPAT=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_FREEZER=y + +# +# Processor type and features +# +CONFIG_ZONE_DMA=y +CONFIG_SMP=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_VSMP is not set +# CONFIG_X86_INTEL_LPSS is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +# CONFIG_HYPERVISOR_GUEST is not set +CONFIG_NO_BOOTMEM=y +# CONFIG_MEMTEST is not set +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +CONFIG_GENERIC_CPU=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +# CONFIG_PROCESSOR_SELECT is not set +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +# CONFIG_GART_IOMMU is not set +CONFIG_CALGARY_IOMMU=y +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y +CONFIG_SWIOTLB=y +CONFIG_IOMMU_HELPER=y +# CONFIG_MAXSMP is not set +CONFIG_NR_CPUS=64 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_COUNT=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +# CONFIG_X86_MCE_INJECT is not set +CONFIG_X86_THERMAL_VECTOR=y +# CONFIG_I8K is not set +CONFIG_MICROCODE=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_MICROCODE_INTEL_EARLY=y +CONFIG_MICROCODE_AMD_EARLY=y +CONFIG_MICROCODE_EARLY=y +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_DIRECT_GBPAGES=y +CONFIG_NUMA=y +CONFIG_AMD_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_NODES_SPAN_OTHER_NODES=y +# CONFIG_NUMA_EMU is not set +CONFIG_NODES_SHIFT=6 +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +# CONFIG_MOVABLE_NODE is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_TRANSPARENT_HUGEPAGE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +# CONFIG_CMA is not set +# CONFIG_ZBUD is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_RESERVE_LOW=64 +CONFIG_MTRR=y +# CONFIG_MTRR_SANITIZER is not set +CONFIG_X86_PAT=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_RANDOM=y +CONFIG_X86_SMAP=y +CONFIG_EFI=y +CONFIG_EFI_STUB=y +# CONFIG_EFI_MIXED is not set +CONFIG_EFI_BOOT_SERVICES_WARN=y +CONFIG_SECCOMP=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +CONFIG_HZ_1000=y +CONFIG_HZ=1000 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +# CONFIG_KEXEC_JUMP is not set +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_RELOCATABLE=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_HOTPLUG_CPU=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +# CONFIG_COMPAT_VDSO is not set +# CONFIG_CMDLINE_BOOL is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +# CONFIG_PM_RUNTIME is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_ADVANCED_DEBUG is not set +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_ACPI=y +CONFIG_ACPI_SLEEP=y +# CONFIG_ACPI_PROCFS_POWER is not set +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_VIDEO=y +CONFIG_ACPI_FAN=y +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_HOTPLUG_CPU=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_NUMA=y +# CONFIG_ACPI_CUSTOM_DSDT is not set +# CONFIG_ACPI_INITRD_TABLE_OVERRIDE is not set +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_CONTAINER=y +# CONFIG_ACPI_SBS is not set +# CONFIG_ACPI_HED is not set +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_BGRT is not set +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +# CONFIG_ACPI_APEI is not set +# CONFIG_ACPI_EXTLOG is not set +# CONFIG_SFI is not set + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_COMMON=y +# CONFIG_CPU_FREQ_STAT is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set + +# +# x86 CPU frequency scaling drivers +# +# CONFIG_X86_INTEL_PSTATE is not set +# CONFIG_X86_PCC_CPUFREQ is not set +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_X86_ACPI_CPUFREQ_CPB=y +# CONFIG_X86_POWERNOW_K8 is not set +# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set +# CONFIG_X86_P4_CLOCKMOD is not set + +# +# shared options +# +# CONFIG_X86_SPEEDSTEP_LIB is not set + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +# CONFIG_INTEL_IDLE is not set + +# +# Memory power savings +# +# CONFIG_I7300_IDLE is not set + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_DOMAINS=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +CONFIG_PCIEPORTBUS=y +# CONFIG_HOTPLUG_PCI_PCIE is not set +CONFIG_PCIEAER=y +# CONFIG_PCIE_ECRC is not set +# CONFIG_PCIEAER_INJECT is not set +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCI_MSI=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +CONFIG_HT_IRQ=y +CONFIG_PCI_ATS=y +# CONFIG_PCI_IOV is not set +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y +# CONFIG_PCI_IOAPIC is not set +CONFIG_PCI_LABEL=y + +# +# PCI host controller drivers +# +CONFIG_ISA_DMA_API=y +CONFIG_AMD_NB=y +CONFIG_PCCARD=y +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +# CONFIG_PD6729 is not set +# CONFIG_I82092 is not set +CONFIG_PCCARD_NONSTATIC=y +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_ACPI is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +# CONFIG_RAPIDIO is not set +# CONFIG_X86_SYSFB is not set + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_HAVE_AOUT is not set +CONFIG_BINFMT_MISC=y +CONFIG_COREDUMP=y +CONFIG_IA32_EMULATION=y +# CONFIG_IA32_AOUT is not set +# CONFIG_X86_X32 is not set +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_KEYS_COMPAT=y +CONFIG_X86_DEV_DMA_OPS=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=y +CONFIG_XFRM_USER=y +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +CONFIG_INET_LRO=y +# CONFIG_INET_DIAG is not set +CONFIG_TCP_CONG_ADVANCED=y +# CONFIG_TCP_CONG_BIC is not set +CONFIG_TCP_CONG_CUBIC=y +# CONFIG_TCP_CONG_WESTWOOD is not set +# CONFIG_TCP_CONG_HTCP is not set +# CONFIG_TCP_CONG_HSTCP is not set +# CONFIG_TCP_CONG_HYBLA is not set +# CONFIG_TCP_CONG_VEGAS is not set +# CONFIG_TCP_CONG_SCALABLE is not set +# CONFIG_TCP_CONG_LP is not set +# CONFIG_TCP_CONG_VENO is not set +# CONFIG_TCP_CONG_YEAH is not set +# CONFIG_TCP_CONG_ILLINOIS is not set +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=y +CONFIG_INET6_ESP=y +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=y +CONFIG_INET6_XFRM_MODE_TUNNEL=y +CONFIG_INET6_XFRM_MODE_BEET=y +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=y +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_GRE is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_NETFILTER_ADVANCED is not set + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_IRC=y +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +CONFIG_NF_CONNTRACK_SIP=y +CONFIG_NF_CT_NETLINK=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +# CONFIG_NF_NAT_AMANDA is not set +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +# CONFIG_NF_NAT_TFTP is not set +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y +CONFIG_NETFILTER_XT_TARGET_LOG=m +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +CONFIG_NETFILTER_XT_TARGET_NFLOG=y +# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set +CONFIG_NETFILTER_XT_TARGET_SECMARK=y +CONFIG_NETFILTER_XT_TARGET_TCPMSS=y + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_POLICY=y +CONFIG_NETFILTER_XT_MATCH_STATE=y +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_TARGET_ULOG=y +CONFIG_NF_NAT_IPV4=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +# CONFIG_NF_NAT_PPTP is not set +# CONFIG_NF_NAT_H323 is not set +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_RAW is not set + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV6=y +CONFIG_NF_CONNTRACK_IPV6=y +CONFIG_IP6_NF_IPTABLES=y +CONFIG_IP6_NF_MATCH_IPV6HEADER=y +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_REJECT=y +CONFIG_IP6_NF_MANGLE=y +# CONFIG_IP6_NF_RAW is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_FQ_CODEL is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +# CONFIG_NET_SCH_INGRESS is not set +# CONFIG_NET_SCH_PLUG is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_CLS_CGROUP is not set +# CONFIG_NET_CLS_BPF is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +# CONFIG_NET_EMATCH_CMP is not set +# CONFIG_NET_EMATCH_NBYTE is not set +# CONFIG_NET_EMATCH_U32 is not set +# CONFIG_NET_EMATCH_META is not set +# CONFIG_NET_EMATCH_TEXT is not set +CONFIG_NET_CLS_ACT=y +# CONFIG_NET_ACT_POLICE is not set +# CONFIG_NET_ACT_GACT is not set +# CONFIG_NET_ACT_MIRRED is not set +# CONFIG_NET_ACT_IPT is not set +# CONFIG_NET_ACT_NAT is not set +# CONFIG_NET_ACT_PEDIT is not set +# CONFIG_NET_ACT_SIMP is not set +# CONFIG_NET_ACT_SKBEDIT is not set +# CONFIG_NET_ACT_CSUM is not set +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_MMAP is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_NET_MPLS_GSO is not set +# CONFIG_HSR is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_JIT is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_TCPPROBE is not set +# CONFIG_NET_DROP_MONITOR is not set +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +# CONFIG_AX25 is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +# CONFIG_CFG80211_WEXT is not set +# CONFIG_LIB80211 is not set +CONFIG_MAC80211=y +CONFIG_MAC80211_HAS_RC=y +# CONFIG_MAC80211_RC_PID is not set +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +# CONFIG_MAC80211_MESH is not set +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +# CONFIG_WIMAX is not set +CONFIG_RFKILL=y +CONFIG_RFKILL_LEDS=y +# CONFIG_RFKILL_INPUT is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +CONFIG_HAVE_BPF_JIT=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_DEBUG_DRIVER is not set +CONFIG_DEBUG_DEVRES=y +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_DMA_SHARED_BUFFER=y + +# +# Bus devices +# +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +# CONFIG_MTD is not set +# CONFIG_PARPORT is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_BLK_DEV_SKD is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set + +# +# Misc devices +# +# CONFIG_SENSORS_LIS3LV02D is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ATMEL_SSC is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1780 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_BMP085_I2C is not set +# CONFIG_PCH_PHUB is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_SRAM is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_SENSORS_LIS3_I2C is not set + +# +# Altera FPGA firmware download module +# +# CONFIG_ALTERA_STAPL is not set +# CONFIG_VMWARE_VMCI is not set + +# +# Intel MIC Host Driver +# +# CONFIG_INTEL_MIC_HOST is not set + +# +# Intel MIC Card Driver +# +# CONFIG_INTEL_MIC_CARD is not set +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=y +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_MULTI_LUN is not set +CONFIG_SCSI_CONSTANTS=y +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# CONFIG_SCSI_LOWLEVEL is not set +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_ATA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +CONFIG_ATA_PIIX=y +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +CONFIG_PATA_AMD=y +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +CONFIG_PATA_OLDPIIX=y +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +CONFIG_PATA_SCH=y +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PCMCIA is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_PATA_ACPI is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID10 is not set +# CONFIG_MD_RAID456 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_MD_FAULTY is not set +# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_ERA is not set +CONFIG_DM_MIRROR=y +# CONFIG_DM_LOG_USERSPACE is not set +# CONFIG_DM_RAID is not set +CONFIG_DM_ZERO=y +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# CONFIG_I2O is not set +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_IFB is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_VXLAN is not set +CONFIG_NETCONSOLE=y +CONFIG_NETPOLL=y +CONFIG_NET_POLL_CONTROLLER=y +# CONFIG_TUN is not set +# CONFIG_VETH is not set +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# CAIF transport drivers +# +# CONFIG_VHOST_NET is not set + +# +# Distributed Switch Architecture drivers +# +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6060 is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +# CONFIG_NET_DSA_MV88E6131 is not set +# CONFIG_NET_DSA_MV88E6123_61_65 is not set +CONFIG_ETHERNET=y +CONFIG_NET_VENDOR_3COM=y +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +# CONFIG_ATL2 is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_ALX is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +CONFIG_TIGON3=y +# CONFIG_BNX2X is not set +CONFIG_NET_VENDOR_BROCADE=y +# CONFIG_BNA is not set +# CONFIG_NET_CALXEDA_XGMAC is not set +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +# CONFIG_CX_ECAT is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_TULIP=y +# CONFIG_DE2104X is not set +# CONFIG_TULIP is not set +# CONFIG_DE4X5 is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_DM9102 is not set +# CONFIG_ULI526X is not set +# CONFIG_PCMCIA_XIRCOM is not set +CONFIG_NET_VENDOR_DLINK=y +# CONFIG_DL2K is not set +# CONFIG_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_EXAR=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_FUJITSU=y +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_NET_VENDOR_HP=y +# CONFIG_HP100 is not set +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=y +CONFIG_E1000=y +# CONFIG_E1000E is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IXGB is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +CONFIG_NET_VENDOR_I825XX=y +# CONFIG_IP1000 is not set +# CONFIG_JME is not set +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +# CONFIG_SKGE is not set +CONFIG_SKY2=y +# CONFIG_SKY2_DEBUG is not set +CONFIG_NET_VENDOR_MELLANOX=y +# CONFIG_MLX4_EN is not set +# CONFIG_MLX4_CORE is not set +# CONFIG_MLX5_CORE is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8851_MLL is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +CONFIG_NET_VENDOR_8390=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_PCMCIA_PCNET is not set +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_FORCEDETH=y +CONFIG_NET_VENDOR_OKI=y +# CONFIG_PCH_GBE is not set +# CONFIG_ETHOC is not set +CONFIG_NET_PACKET_ENGINE=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_QLGE is not set +# CONFIG_NETXEN_NIC is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +CONFIG_8139TOO=y +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_R8169 is not set +# CONFIG_SH_ETH is not set +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +# CONFIG_SFC is not set +CONFIG_NET_VENDOR_SMSC=y +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +CONFIG_NET_VENDOR_STMICRO=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TLAN is not set +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_XIRCOM=y +# CONFIG_PCMCIA_XIRC2PS is not set +CONFIG_FDDI=y +# CONFIG_DEFXX is not set +# CONFIG_SKFP is not set +# CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_AT803X_PHY is not set +# CONFIG_AMD_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_HSO is not set +# CONFIG_USB_IPHETH is not set +CONFIG_WLAN=y +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_AIRO is not set +# CONFIG_ATMEL is not set +# CONFIG_AT76C50X_USB is not set +# CONFIG_AIRO_CS is not set +# CONFIG_PCMCIA_WL3501 is not set +# CONFIG_PRISM54 is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +# CONFIG_ADM8211 is not set +# CONFIG_MAC80211_HWSIM is not set +# CONFIG_MWL8K is not set +# CONFIG_ATH_CARDS is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_BRCMSMAC is not set +# CONFIG_BRCMFMAC is not set +# CONFIG_HOSTAP is not set +# CONFIG_IPW2100 is not set +# CONFIG_IWLWIFI is not set +# CONFIG_IWL4965 is not set +# CONFIG_IWL3945 is not set +# CONFIG_LIBERTAS is not set +# CONFIG_P54_COMMON is not set +# CONFIG_RT2X00 is not set +CONFIG_RTL_CARDS=y +# CONFIG_RTL8192CE is not set +# CONFIG_RTL8192SE is not set +# CONFIG_RTL8192DE is not set +# CONFIG_RTL8723AE is not set +# CONFIG_RTL8723BE is not set +# CONFIG_RTL8188EE is not set +# CONFIG_RTL8192CU is not set +# CONFIG_WL_TI is not set +# CONFIG_ZD1211RW is not set +# CONFIG_MWIFIEX is not set +# CONFIG_CW1200 is not set +# CONFIG_RSI_91X is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=y +CONFIG_INPUT_POLLDEV=y +CONFIG_INPUT_SPARSEKMAP=y +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +CONFIG_INPUT_JOYSTICK=y +# CONFIG_JOYSTICK_ANALOG is not set +# CONFIG_JOYSTICK_A3D is not set +# CONFIG_JOYSTICK_ADI is not set +# CONFIG_JOYSTICK_COBRA is not set +# CONFIG_JOYSTICK_GF2K is not set +# CONFIG_JOYSTICK_GRIP is not set +# CONFIG_JOYSTICK_GRIP_MP is not set +# CONFIG_JOYSTICK_GUILLEMOT is not set +# CONFIG_JOYSTICK_INTERACT is not set +# CONFIG_JOYSTICK_SIDEWINDER is not set +# CONFIG_JOYSTICK_TMDC is not set +# CONFIG_JOYSTICK_IFORCE is not set +# CONFIG_JOYSTICK_WARRIOR is not set +# CONFIG_JOYSTICK_MAGELLAN is not set +# CONFIG_JOYSTICK_SPACEORB is not set +# CONFIG_JOYSTICK_SPACEBALL is not set +# CONFIG_JOYSTICK_STINGER is not set +# CONFIG_JOYSTICK_TWIDJOY is not set +# CONFIG_JOYSTICK_ZHENHUA is not set +# CONFIG_JOYSTICK_AS5011 is not set +# CONFIG_JOYSTICK_JOYDUMP is not set +# CONFIG_JOYSTICK_XPAD is not set +CONFIG_INPUT_TABLET=y +# CONFIG_TABLET_USB_ACECAD is not set +# CONFIG_TABLET_USB_AIPTEK is not set +# CONFIG_TABLET_USB_GTCO is not set +# CONFIG_TABLET_USB_HANWANG is not set +# CONFIG_TABLET_USB_KBTAB is not set +# CONFIG_TABLET_USB_WACOM is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_MPU3050 is not set +# CONFIG_INPUT_APANEL is not set +# CONFIG_INPUT_ATLAS_BTNS is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_UINPUT is not set +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_SYNCLINK_GT is not set +# CONFIG_NOZOMI is not set +# CONFIG_ISI is not set +# CONFIG_N_HDLC is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +CONFIG_DEVKMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=y +# CONFIG_SERIAL_8250_CS is not set +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +# CONFIG_SERIAL_8250_DW is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MFD_HSU is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_PCH_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_INTEL is not set +# CONFIG_HW_RANDOM_AMD is not set +CONFIG_HW_RANDOM_VIA=y +CONFIG_NVRAM=y +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set +# CONFIG_IPWIRELESS is not set +# CONFIG_MWAVE is not set +# CONFIG_RAW_DRIVER is not set +CONFIG_HPET=y +# CONFIG_HPET_MMAP is not set +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +CONFIG_DEVPORT=y +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +# CONFIG_I2C_CHARDEV is not set +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +CONFIG_I2C_I801=y +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_ISMT is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# ACPI drivers +# +# CONFIG_I2C_SCMI is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EG20T is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set + +# +# PPS support +# +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PTP_1588_CLOCK_PCH is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_BATTERY_BQ27x00 is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_AVS is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_K10TEMP is not set +# CONFIG_SENSORS_FAM15H_POWER is not set +# CONFIG_SENSORS_APPLESMC is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_CORETEMP is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_HTU21 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VIA_CPUTEMP is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set + +# +# ACPI drivers +# +# CONFIG_SENSORS_ACPI_POWER is not set +# CONFIG_SENSORS_ATK0110 is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_USER_SPACE=y +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_INTEL_POWERCLAMP is not set +CONFIG_X86_PKG_TEMP_THERMAL=m +# CONFIG_ACPI_INT3403_THERMAL is not set + +# +# Texas Instruments thermal drivers +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_CORE is not set +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +# CONFIG_ALIM1535_WDT is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_F71808E_WDT is not set +# CONFIG_SP5100_TCO is not set +# CONFIG_SBC_FITPC2_WATCHDOG is not set +# CONFIG_EUROTECH_WDT is not set +# CONFIG_IB700_WDT is not set +# CONFIG_IBMASR is not set +# CONFIG_WAFER_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_IE6XX_WDT is not set +# CONFIG_ITCO_WDT is not set +# CONFIG_IT8712F_WDT is not set +# CONFIG_IT87_WDT is not set +# CONFIG_HP_WATCHDOG is not set +# CONFIG_SC1200_WDT is not set +# CONFIG_PC87413_WDT is not set +# CONFIG_NV_TCO is not set +# CONFIG_60XX_WDT is not set +# CONFIG_SBC8360_WDT is not set +# CONFIG_CPU5_WDT is not set +# CONFIG_SMSC_SCH311X_WDT is not set +# CONFIG_SMSC37B787_WDT is not set +# CONFIG_VIA_WDT is not set +# CONFIG_W83627HF_WDT is not set +# CONFIG_W83697HF_WDT is not set +# CONFIG_W83697UG_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_W83977F_WDT is not set +# CONFIG_MACHZ_WDT is not set +# CONFIG_SBC_EPX_C3_WATCHDOG is not set + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y + +# +# Broadcom specific AMBA +# +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_CS5535 is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RTSX_PCI is not set +# CONFIG_MFD_RTSX_USB is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_REGULATOR is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +# CONFIG_AGP_SIS is not set +# CONFIG_AGP_VIA is not set +CONFIG_INTEL_GTT=y +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_VGA_SWITCHEROO is not set + +# +# Direct Rendering Manager +# +CONFIG_DRM=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_TDFX is not set +# CONFIG_DRM_R128 is not set +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_I810 is not set +CONFIG_DRM_I915=y +# CONFIG_DRM_I915_KMS is not set +CONFIG_DRM_I915_FBDEV=y +# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set +# CONFIG_DRM_I915_UMS is not set +# CONFIG_DRM_MGA is not set +# CONFIG_DRM_SIS is not set +# CONFIG_DRM_VIA is not set +# CONFIG_DRM_SAVAGE is not set +# CONFIG_DRM_VMWGFX is not set +# CONFIG_DRM_GMA500 is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_PTN3460 is not set + +# +# Frame buffer Devices +# +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ARC is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_UVESA is not set +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +# CONFIG_FB_N411 is not set +# CONFIG_FB_HGA is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_LE80578 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_VIA is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_GOLDFISH is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_AUO_K190X is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_EXYNOS_VIDEO is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=y +# CONFIG_BACKLIGHT_APPLE is not set +# CONFIG_BACKLIGHT_SAHARA is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3630A is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LP855X is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_VGASTATE is not set +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +CONFIG_SOUND_OSS_CORE_PRECLAIM=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=y +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_VMASTER=y +CONFIG_SND_KCTL_JACK=y +CONFIG_SND_DMA_SGBUF=y +# CONFIG_SND_RAWMIDI_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +# CONFIG_SND_EMU10K1_SEQ is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +CONFIG_SND_PCI=y +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALS300 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ASIHPI is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_OXYGEN is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INDIGODJX is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +# +# HD-Audio +# +CONFIG_SND_HDA=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_HDA_HWDEP=y +# CONFIG_SND_HDA_RECONFIG is not set +# CONFIG_SND_HDA_INPUT_BEEP is not set +# CONFIG_SND_HDA_INPUT_JACK is not set +# CONFIG_SND_HDA_PATCH_LOADER is not set +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_CODEC_HDMI=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CA0132=y +# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_USB=y +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_USX2Y is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_US122L is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +CONFIG_SND_PCMCIA=y +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_PDAUDIOCF is not set +# CONFIG_SND_SOC is not set +# CONFIG_SOUND_PRIME is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +CONFIG_HIDRAW=y +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_HUION is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +CONFIG_HID_GYRATION=y +# CONFIG_HID_ICADE is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO_TPKBD is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +CONFIG_HID_NTRIG=y +# CONFIG_HID_ORTEK is not set +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=y +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +# CONFIG_SONY_FF is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEELSERIES is not set +CONFIG_HID_SUNPLUS=y +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +CONFIG_HID_TOPSEED=y +# CONFIG_HID_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y + +# +# I2C HID support +# +# CONFIG_I2C_HID is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_DEBUG=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_C67X00_HCD=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OXU210HP_HCD=y +CONFIG_USB_ISP116X_HCD=y +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1362_HCD=y +CONFIG_USB_FUSBH200_HCD=y +CONFIG_USB_FOTG210_HCD=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_SL811_HCD=y +# CONFIG_USB_SL811_HCD_ISO is not set +# CONFIG_USB_SL811_CS is not set +CONFIG_USB_R8A66597_HCD=y +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +CONFIG_USB_PRINTER=y +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HSIC_USB3503 is not set + +# +# USB Physical Layer drivers +# +# CONFIG_USB_PHY is not set +# CONFIG_USB_OTG_FSM is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_SAMSUNG_USB2PHY is not set +# CONFIG_SAMSUNG_USB3PHY is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_RCAR_PHY is not set +# CONFIG_USB_GADGET is not set +# CONFIG_UWB is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y + +# +# LED drivers +# +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_CLEVO_MAIL is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_PCA9685 is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_INTEL_SS4200 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_BLINKM is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +# CONFIG_LEDS_TRIGGER_TIMER is not set +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC=y +CONFIG_EDAC_LEGACY_SYSFS=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=y +# CONFIG_EDAC_MCE_INJ is not set +# CONFIG_EDAC_MM_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_HCTOSYS is not set +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12057 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# SPI RTC drivers +# + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_DS2404 is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_MOXART is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +# CONFIG_INTEL_MID_DMAC is not set +# CONFIG_INTEL_IOATDMA is not set +# CONFIG_DW_DMAC_CORE is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set +# CONFIG_PCH_DMA is not set +CONFIG_DMA_ACPI=y +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set + +# +# Virtio drivers +# +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_STAGING is not set +CONFIG_X86_PLATFORM_DEVICES=y +# CONFIG_ACERHDF is not set +# CONFIG_ASUS_LAPTOP is not set +# CONFIG_FUJITSU_LAPTOP is not set +# CONFIG_FUJITSU_TABLET is not set +# CONFIG_AMILO_RFKILL is not set +# CONFIG_HP_ACCEL is not set +# CONFIG_HP_WIRELESS is not set +# CONFIG_MSI_LAPTOP is not set +# CONFIG_PANASONIC_LAPTOP is not set +# CONFIG_COMPAL_LAPTOP is not set +# CONFIG_SONY_LAPTOP is not set +# CONFIG_IDEAPAD_LAPTOP is not set +# CONFIG_THINKPAD_ACPI is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_INTEL_MENLOW is not set +CONFIG_EEEPC_LAPTOP=y +# CONFIG_ACPI_WMI is not set +# CONFIG_TOPSTAR_LAPTOP is not set +# CONFIG_TOSHIBA_BT_RFKILL is not set +# CONFIG_ACPI_CMPC is not set +# CONFIG_INTEL_IPS is not set +# CONFIG_IBM_RTL is not set +# CONFIG_XO15_EBOOK is not set +# CONFIG_SAMSUNG_LAPTOP is not set +# CONFIG_INTEL_OAKTRAIL is not set +# CONFIG_SAMSUNG_Q10 is not set +# CONFIG_APPLE_GMUX is not set +# CONFIG_INTEL_RST is not set +# CONFIG_INTEL_SMARTCONNECT is not set +# CONFIG_PVPANIC is not set +# CONFIG_CHROME_PLATFORMS is not set + +# +# Hardware Spinlock drivers +# +CONFIG_CLKEVT_I8253=y +CONFIG_CLKBLD_I8253=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_EM_TIMER_STI is not set +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y +CONFIG_AMD_IOMMU=y +CONFIG_AMD_IOMMU_STATS=y +# CONFIG_AMD_IOMMU_V2 is not set +CONFIG_DMAR_TABLE=y +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +# CONFIG_IRQ_REMAP is not set + +# +# Remoteproc drivers +# +# CONFIG_STE_MODEM_RPROC is not set + +# +# Rpmsg drivers +# +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_PHY_SAMSUNG_USB2 is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Firmware Drivers +# +# CONFIG_EDD is not set +CONFIG_FIRMWARE_MEMMAP=y +# CONFIG_DELL_RBU is not set +# CONFIG_DCDBAS is not set +CONFIG_DMIID=y +# CONFIG_DMI_SYSFS is not set +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +# CONFIG_ISCSI_IBFT_FIND is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_VARS=y +CONFIG_EFI_RUNTIME_MAP=y + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_EXT2_FS is not set +CONFIG_EXT3_FS=y +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT23=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_PRINT_QUOTA_WARNING is not set +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y +CONFIG_QUOTACTL_COMPAT=y +CONFIG_AUTOFS4_FS=y +# CONFIG_FUSE_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_LOGFS is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_EFIVAR_FS=y +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +# CONFIG_NFS_SWAP is not set +# CONFIG_NFS_V4_1 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +CONFIG_NLS_UTF8=y + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_DEBUG_KERNEL=y + +# +# Memory Debugging +# +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +CONFIG_DEBUG_STACK_USAGE=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_ARCH_KMEMCHECK=y +# CONFIG_KMEMCHECK is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +CONFIG_LOCKUP_DETECTOR=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +CONFIG_DEBUG_LOCK_ALLOC=y +CONFIG_PROVE_LOCKING=y +CONFIG_LOCKDEP=y +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_LOCKDEP is not set +CONFIG_DEBUG_ATOMIC_SLEEP=y +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +CONFIG_TRACE_IRQFLAGS=y +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_PROVE_RCU is not set +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_TORTURE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RCU_CPU_STALL_INFO is not set +CONFIG_RCU_TRACE=y +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENT=y +# CONFIG_UPROBE_EVENT is not set +CONFIG_PROBE_EVENTS=y +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_MMIOTRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set + +# +# Runtime Testing +# +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +CONFIG_PROVIDE_OHCI1394_DMA_INIT=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_TEST_MODULE is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_X86_VERBOSE_BOOTUP=y +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_SET_MODULE_RONX is not set +# CONFIG_DEBUG_NX_TEST is not set +CONFIG_DOUBLEFAULT=y +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_IOMMU_STRESS is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +CONFIG_DEBUG_BOOT_PARAMS=y +# CONFIG_CPA_DEBUG is not set +CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +CONFIG_KEYS_DEBUG_PROC_KEYS=y +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +# CONFIG_SECURITYFS is not set +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +# CONFIG_SECURITY_PATH is not set +# CONFIG_INTEL_TXT is not set +CONFIG_LSM_MMAP_MIN_ADDR=65536 +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_IMA is not set +# CONFIG_EVM is not set +CONFIG_DEFAULT_SECURITY_SELINUX=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +CONFIG_DEFAULT_SECURITY="selinux" +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_PCRYPT is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=y +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=y +# CONFIG_CRYPTO_GCM is not set +CONFIG_CRYPTO_SEQIV=y + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=y +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRC32_PCLMUL is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=y +# CONFIG_CRYPTO_SHA1_SSSE3 is not set +# CONFIG_CRYPTO_SHA256_SSSE3 is not set +# CONFIG_CRYPTO_SHA512_SSSE3 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_X86_64 is not set +# CONFIG_CRYPTO_AES_NI_INTEL is not set +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SALSA20_X86_64 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_TWOFISH_X86_64 is not set +# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set +# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_PADLOCK is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set +CONFIG_HAVE_KVM=y +CONFIG_VIRTUALIZATION=y +# CONFIG_KVM is not set +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IO=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_IA64 is not set +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +# CONFIG_XZ_DEC_SPARC is not set +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_NLATTR=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_AVERAGE=y +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +CONFIG_OID_REGISTRY=y +CONFIG_UCS2_STRING=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y diff --git a/meta-luv/recipes-kernel/linux/linux-yocto-efi-test_3.13.bb b/meta-luv/recipes-kernel/linux/linux-yocto-efi-test_3.13.bb new file mode 100644 index 00000000000..10c180e352c --- /dev/null +++ b/meta-luv/recipes-kernel/linux/linux-yocto-efi-test_3.13.bb @@ -0,0 +1,67 @@ +# linux-yocto-custom.bb: +# +# An example kernel recipe that uses the linux-yocto and oe-core +# kernel classes to apply a subset of yocto kernel management to git +# managed kernel repositories. +# +# To use linux-yocto-custom in your layer, create a +# linux-yocto-custom.bbappend file containing at least the following +# lines: +# +# FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +# COMPATIBLE_MACHINE_yourmachine = "yourmachine" +# +# You must also provide a Linux kernel configuration. The most direct +# method is to copy your .config to files/defconfig in your layer, +# in the same directory as the bbappend and add file://defconfig to +# your SRC_URI. +# +# To use the yocto kernel tooling to generate a BSP configuration +# using modular configuration fragments, see the yocto-bsp and +# yocto-kernel tools documentation. +# +# Warning: +# +# Building this example without providing a defconfig or BSP +# configuration will result in build or boot errors. This is not a +# bug. +# +# +# Notes: +# +# patches: patches can be merged into to the source git tree itself, +# added via the SRC_URI, or controlled via a BSP +# configuration. +# +# example configuration addition: +# SRC_URI += "file://smp.cfg" +# example patch addition (for kernel v3.4 only): +# SRC_URI += "file://0001-linux-version-tweak.patch +# example feature addition (for kernel v3.4 only): +# SRC_URI += "file://feature.scc" +# + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +KBRANCH="stable" +inherit kernel +require recipes-kernel/linux/linux-yocto.inc + +# Override SRC_URI in a bbappend file to point at a different source +# tree if you do not want to build from Linus' tree. +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git;protocol=git;branch=${KBRANCH} file://defconfig" + +LINUX_VERSION ?= "3.13" +LINUX_VERSION_EXTENSION ?= "-efitest" + +# Override SRCREV to point to a different commit in a bbappend file to +# build a different release of the Linux kernel. +# tag: v3.4 76e10d158efb6d4516018846f60c2ab5501900bc +SRCREV="${AUTOREV}" + +PR = "r5" +PV = "${LINUX_VERSION}+git${SRCPV}" + +# Override COMPATIBLE_MACHINE to include your machine in a bbappend +# file. Leaving it empty here ensures an early explicit build failure. +COMPATIBLE_MACHINE = "qemux86|qemux86-64" diff --git a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_3.10.bbappend b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_3.10.bbappend index aa43b15bb05..2f529c0fb23 100644 --- a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_3.10.bbappend +++ b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_3.10.bbappend @@ -7,11 +7,11 @@ KBRANCH_beagleboard = "standard/beagleboard" KMACHINE_genericx86 ?= "common-pc" KMACHINE_genericx86-64 ?= "common-pc-64" -SRCREV_machine_genericx86 ?= "702040ac7c7ec66a29b4d147665ccdd0ff015577" -SRCREV_machine_genericx86-64 ?= "702040ac7c7ec66a29b4d147665ccdd0ff015577" -SRCREV_machine_routerstationpro ?= "d4e6adefaf92a1e7b6539d371ba49b78bd194a84" -SRCREV_machine_mpc8315e-rdb ?= "12dc46ba4efb80e135fec4dce913eeb87ee671b3" -SRCREV_machine_beagleboard ?= "702040ac7c7ec66a29b4d147665ccdd0ff015577" +SRCREV_machine_genericx86 ?= "c03195ed6e3066494e3fb4be69154a57066e845b" +SRCREV_machine_genericx86-64 ?= "c03195ed6e3066494e3fb4be69154a57066e845b" +SRCREV_machine_routerstationpro ?= "2d91e201018c15e24fb83336dcb4029b8569eb9d" +SRCREV_machine_mpc8315e-rdb ?= "ac071526ffac37c907532933b628e4f64070f155" +SRCREV_machine_beagleboard ?= "3d9b0d130a00dd32e6061ac708eaaaed69e35c3d" COMPATIBLE_MACHINE_genericx86 = "genericx86" COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64" diff --git a/meta-yocto/conf/distro/include/package_regex.inc b/meta-yocto/conf/distro/include/package_regex.inc index 89cd366dffa..da6e738c27c 100644 --- a/meta-yocto/conf/distro/include/package_regex.inc +++ b/meta-yocto/conf/distro/include/package_regex.inc @@ -216,7 +216,7 @@ REGEX_URI_pn-psmisc = "http://sourceforge.net/projects/psmisc/files/psmisc/" REGEX_pn-psmisc = "[hH][rR][eE][fF]=\"http://sourceforge.net/projects/psmisc/files/psmisc/psmisc\-(?P((\d+[\.\-_]*)+))\.tar\.gz/download\"" REGEX_URI_pn-python-argparse = "https://code.google.com/p/argparse/downloads/list" REGEX_URI_pn-python-docutils = "http://sourceforge.net/projects/docutils/files/docutils/" -REGEX_pn-python-docutils = "[hH][rR][eE][fF]=\"/projects/docutils/files/docutils/docutils\-(?P((\d+[\.\-_]*)+)).*/\"" +REGEX_pn-python-docutils = "[hH][rR][eE][fF]=\"/projects/docutils/files/docutils/(?P((\d+[\.\-_]*)+)).*/\"" REGEX_URI_pn-python-pycurl = "http://pycurl.sourceforge.net/download/" REGEX_pn-python-pycurl = "[hH][rR][eE][fF]=\"pycurl-(?P((\d+[\.\-_]*)+)).tar.gz\"" REGEX_URI_pn-python-scons = "http://sourceforge.net/projects/scons/files/scons/" diff --git a/meta-yocto/conf/distro/poky.conf b/meta-yocto/conf/distro/poky.conf index 465dbb95ef8..53c38187fc6 100644 --- a/meta-yocto/conf/distro/poky.conf +++ b/meta-yocto/conf/distro/poky.conf @@ -1,6 +1,6 @@ DISTRO = "poky" DISTRO_NAME = "Poky (Yocto Project Reference Distro)" -DISTRO_VERSION = "1.5" +DISTRO_VERSION = "1.5.1" DISTRO_CODENAME = "next" SDK_VENDOR = "-pokysdk" SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}" diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index dfa580c5833..d0793b671e5 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -210,7 +210,7 @@ def preferred_ml_updates(d): virt = "virtual/" for p in prefixes: if pkg != "kernel": - val = p + "-" + val + newval = p + "-" + val # implement variable keys localdata = bb.data.createCopy(d) @@ -219,12 +219,12 @@ def preferred_ml_updates(d): bb.data.update_data(localdata) newname = localdata.expand(prov) if newname != prov and not d.getVar(newname, False): - d.setVar(newname, localdata.expand(val)) + d.setVar(newname, localdata.expand(newval)) # implement alternative multilib name newname = localdata.expand("PREFERRED_PROVIDER_" + virt + p + "-" + pkg) if not d.getVar(newname, False): - d.setVar(newname, val) + d.setVar(newname, newval) # Avoid future variable key expansion provexp = d.expand(prov) if prov != provexp and d.getVar(prov, False): @@ -433,7 +433,7 @@ python () { extradeps = [] extrardeps = [] extraconf = [] - for flag, flagval in pkgconfigflags.items(): + for flag, flagval in sorted(pkgconfigflags.items()): if flag == "defaultval": continue items = flagval.split(",") diff --git a/meta/classes/boot-directdisk.bbclass b/meta/classes/boot-directdisk.bbclass index 55357283ac8..0965143a97c 100644 --- a/meta/classes/boot-directdisk.bbclass +++ b/meta/classes/boot-directdisk.bbclass @@ -32,7 +32,8 @@ BOOTDD_VOLUME_ID ?= "boot" BOOTDD_EXTRA_SPACE ?= "16384" EFI = "${@base_contains("MACHINE_FEATURES", "efi", "1", "0", d)}" -EFI_CLASS = "${@base_contains("MACHINE_FEATURES", "efi", "grub-efi", "", d)}" +EFI_PROVIDER ?= "grub-efi" +EFI_CLASS = "${@base_contains("MACHINE_FEATURES", "efi", "${EFI_PROVIDER}", "", d)}" # Include legacy boot if MACHINE_FEATURES includes "pcbios" or if it does not # contain "efi". This way legacy is supported by default if neither is @@ -85,7 +86,7 @@ build_boot_dd() { syslinux_hddimg_populate $HDDDIR fi if [ "${EFI}" = "1" ]; then - grubefi_hddimg_populate $HDDDIR + efi_hddimg_populate $HDDDIR fi BLOCKS=`du -bks $HDDDIR | cut -f 1` @@ -141,7 +142,7 @@ python do_bootdirectdisk() { if d.getVar("PCBIOS", True) == "1": bb.build.exec_func('build_syslinux_cfg', d) if d.getVar("EFI", True) == "1": - bb.build.exec_func('build_grub_cfg', d) + bb.build.exec_func('build_efi_cfg', d) bb.build.exec_func('build_boot_dd', d) } diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass index 395085d0ab8..a2adfb55227 100644 --- a/meta/classes/bootimg.bbclass +++ b/meta/classes/bootimg.bbclass @@ -22,6 +22,7 @@ # ${COMPRESSISO} - Transparent compress ISO, reduce size ~40% if set to 1 # ${NOISO} - skip building the ISO image if set to 1 # ${NOHDD} - skip building the HDD image if set to 1 +# ${HDDIMG_ID} - FAT image volume-id # ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ @@ -42,7 +43,8 @@ BOOTIMG_VOLUME_ID ?= "boot" BOOTIMG_EXTRA_SPACE ?= "512" EFI = "${@base_contains("MACHINE_FEATURES", "efi", "1", "0", d)}" -EFI_CLASS = "${@base_contains("MACHINE_FEATURES", "efi", "grub-efi", "", d)}" +EFI_PROVIDER ?= "grub-efi" +EFI_CLASS = "${@base_contains("MACHINE_FEATURES", "efi", "${EFI_PROVIDER}", "", d)}" # Include legacy boot if MACHINE_FEATURES includes "pcbios" or if it does not # contain "efi". This way legacy is supported by default if neither is @@ -89,7 +91,7 @@ build_iso() { syslinux_iso_populate ${ISODIR} fi if [ "${EFI}" = "1" ]; then - grubefi_iso_populate ${ISODIR} + efi_iso_populate ${ISODIR} build_fat_img ${EFIIMGDIR} ${ISODIR}/efi.img fi @@ -192,7 +194,14 @@ build_fat_img() { FATSIZE="-F 32" fi - mkdosfs ${FATSIZE} -n ${BOOTIMG_VOLUME_ID} -S 512 -C ${FATIMG} ${BLOCKS} + if [ -z "${HDDIMG_ID}" ]; then + mkdosfs ${FATSIZE} -n ${BOOTIMG_VOLUME_ID} -S 512 -C ${FATIMG} \ + ${BLOCKS} + else + mkdosfs ${FATSIZE} -n ${BOOTIMG_VOLUME_ID} -S 512 -C ${FATIMG} \ + ${BLOCKS} -i ${HDDIMG_ID} + fi + # Copy FATSOURCEDIR recursively into the image file directly mcopy -i ${FATIMG} -s ${FATSOURCEDIR}/* ::/ } @@ -206,7 +215,7 @@ build_hddimg() { syslinux_hddimg_populate ${HDDDIR} fi if [ "${EFI}" = "1" ]; then - grubefi_hddimg_populate ${HDDDIR} + efi_hddimg_populate ${HDDDIR} fi build_fat_img ${HDDDIR} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg @@ -227,7 +236,7 @@ python do_bootimg() { if d.getVar("PCBIOS", True) == "1": bb.build.exec_func('build_syslinux_cfg', d) if d.getVar("EFI", True) == "1": - bb.build.exec_func('build_grub_cfg', d) + bb.build.exec_func('build_efi_cfg', d) bb.build.exec_func('build_hddimg', d) bb.build.exec_func('build_iso', d) } diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass index 4387d05f78c..c9742128e57 100644 --- a/meta/classes/cross-canadian.bbclass +++ b/meta/classes/cross-canadian.bbclass @@ -15,12 +15,30 @@ STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${SDK_ARCH}${S # Update BASE_PACKAGE_ARCH and PACKAGE_ARCHS # PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}" +CANADIANEXTRAOS = "" python () { archs = d.getVar('PACKAGE_ARCHS', True).split() sdkarchs = [] for arch in archs: sdkarchs.append(arch + '-${SDKPKGSUFFIX}') d.setVar('PACKAGE_ARCHS', " ".join(sdkarchs)) + + # PowerPC can build "linux" and "linux-gnuspe" + tarch = d.getVar("TARGET_ARCH", True) + if tarch == "powerpc": + tos = d.getVar("TARGET_OS", True) + if (tos != "linux" and tos != "linux-gnuspe"): + bb.fatal("Building cross-candian powerpc for an unknown TARGET_SYS (%s), please update cross-canadian.bbclass" % d.getVar("TARGET_SYS", True)) + # Have to expand DEPENDS before we change the extensions + d.setVar("DEPENDS", d.getVar("DEPENDS", True)) + d.setVar("STAGING_BINDIR_TOOLCHAIN", d.getVar("STAGING_BINDIR_TOOLCHAIN", True)) + for prefix in ["AR", "AS", "DLLTOOL", "CC", "CXX", "GCC", "LD", "LIPO", "NM", "OBJDUMP", "RANLIB", "STRIP", "WINDRES"]: + n = prefix + "_FOR_TARGET" + d.setVar(n, d.getVar(n, True)) + + d.setVar("LIBCEXTENSION", "") + d.setVar("ABIEXTENSION", "") + d.setVar("CANADIANEXTRAOS", "linux-gnuspe") } MULTIMACH_TARGET_SYS = "${PACKAGE_ARCH}${HOST_VENDOR}-${HOST_OS}" @@ -95,3 +113,21 @@ USE_NLS = "${SDKUSE_NLS}" # We have to us TARGET_ARCH but we care about the absolute value # and not any particular tune that is enabled. TARGET_ARCH[vardepsexclude] = "TUNE_ARCH" + +# If MLPREFIX is set by multilib code, shlibs +# points to the wrong place so force it +SHLIBSDIRS = "${PKGDATA_DIR}/nativesdk-shlibs" +SHLIBSWORKDIR = "${PKGDATA_DIR}/nativesdk-shlibs" + +cross_canadian_bindirlinks () { + for i in ${CANADIANEXTRAOS} + do + d=${D}${bindir}/../${TARGET_ARCH}${TARGET_VENDOR}-$i + install -d $d + for j in `ls ${D}${bindir}` + do + p=${TARGET_ARCH}${TARGET_VENDOR}-$i-`echo $j | sed -e s,${TARGET_PREFIX},,` + ln -s ../${TARGET_SYS}/$j $d/$p + done + done +} diff --git a/meta/classes/extrausers.bbclass b/meta/classes/extrausers.bbclass index 8670a2a85aa..faf57b108e5 100644 --- a/meta/classes/extrausers.bbclass +++ b/meta/classes/extrausers.bbclass @@ -54,6 +54,10 @@ set_user_group () { bbfatal "Invalid command in EXTRA_USERS_PARAMS: $cmd" ;; esac + # Avoid infinite loop if the last parameter doesn't end with ';' + if [ "$setting" = "$remaining" ]; then + break + fi # iterate to the next setting setting=`echo $remaining | cut -d ';' -f1` remaining=`echo $remaining | cut -d ';' -f2-` diff --git a/meta/classes/grub-efi.bbclass b/meta/classes/grub-efi.bbclass index 96fb98b043e..f71ad27bb0f 100644 --- a/meta/classes/grub-efi.bbclass +++ b/meta/classes/grub-efi.bbclass @@ -16,6 +16,7 @@ # ${GRUB_TIMEOUT} - timeout before executing the deault label (optional) do_bootimg[depends] += "grub-efi-${TRANSLATED_TARGET_ARCH}-native:do_deploy" +do_bootdirectdisk[depends] += "grub-efi-${TRANSLATED_TARGET_ARCH}-native:do_deploy" GRUB_SERIAL ?= "console=ttyS0,115200" GRUBCFG = "${S}/grub.cfg" @@ -25,7 +26,7 @@ GRUB_OPTS ?= "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" EFIDIR = "/EFI/BOOT" -grubefi_populate() { +efi_populate() { # DEST must be the root of the image so that EFIDIR is not # nested under a top level directory. DEST=$1 @@ -41,24 +42,24 @@ grubefi_populate() { install -m 0644 ${GRUBCFG} ${DEST}${EFIDIR} } -grubefi_iso_populate() { +efi_iso_populate() { iso_dir=$1 - grubefi_populate $iso_dir + efi_populate $iso_dir # Build a EFI directory to create efi.img mkdir -p ${EFIIMGDIR}/${EFIDIR} cp $iso_dir/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR} cp $iso_dir/vmlinuz ${EFIIMGDIR} - echo "EFI\\BOOT\\${GRUB_IMAGE}" > ${EFIIMGDIR}/startup.nsh + echo "${GRUB_IMAGE}" > ${EFIIMGDIR}/startup.nsh if [ -f "$iso_dir/initrd" ] ; then cp $iso_dir/initrd ${EFIIMGDIR} fi } -grubefi_hddimg_populate() { - grubefi_populate $1 +efi_hddimg_populate() { + efi_populate $1 } -python build_grub_cfg() { +python build_efi_cfg() { import sys workdir = d.getVar('WORKDIR', True) diff --git a/meta/classes/gummiboot.bbclass b/meta/classes/gummiboot.bbclass new file mode 100644 index 00000000000..021465201f7 --- /dev/null +++ b/meta/classes/gummiboot.bbclass @@ -0,0 +1,114 @@ +# Copyright (C) 2014 Intel Corporation +# +# Released under the MIT license (see COPYING.MIT) + +# gummiboot.bbclass - equivalent of grub-efi.bbclass +# Set EFI_PROVIDER = "gummiboot" to use gummiboot on your live images instead of grub-efi +# (images built by bootimage.bbclass or boot-directdisk.bbclass) + +do_bootimg[depends] += "gummiboot:do_deploy" +do_bootdirectdisk[depends] += "gummiboot:do_deploy" + +EFIDIR = "/EFI/BOOT" + +GUMMIBOOT_CFG ?= "${S}/loader.conf" +GUMMIBOOT_ENTRIES ?= "" +GUMMIBOOT_TIMEOUT ?= "10" + +efi_populate() { + DEST=$1 + + EFI_IMAGE="gummibootia32.efi" + DEST_EFI_IMAGE="bootia32.efi" + if [ "${TARGET_ARCH}" = "x86_64" ]; then + EFI_IMAGE="gummibootx64.efi" + DEST_EFI_IMAGE="bootx64.efi" + fi + + install -d ${DEST}${EFIDIR} + # gummiboot requires these paths for configuration files + # they are not customizable so no point in new vars + install -d ${DEST}/loader + install -d ${DEST}/loader/entries + install -m 0644 ${DEPLOY_DIR_IMAGE}/${EFI_IMAGE} ${DEST}${EFIDIR}/${DEST_EFI_IMAGE} + install -m 0644 ${GUMMIBOOT_CFG} ${DEST}/loader/loader.conf + for i in ${GUMMIBOOT_ENTRIES}; do + install -m 0644 ${i} ${DEST}/loader/entries + done +} + +efi_iso_populate() { + iso_dir=$1 + efi_populate $iso_dir + mkdir -p ${EFIIMGDIR}/${EFIDIR} + cp $iso_dir/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR} + cp $iso_dir/vmlinuz ${EFIIMGDIR} + echo "${DEST_EFI_IMAGE}" > ${EFIIMGDIR}/startup.nsh + if [ -f "$iso_dir/initrd" ] ; then + cp $iso_dir/initrd ${EFIIMGDIR} + fi +} + +efi_hddimg_populate() { + efi_populate $1 +} + +python build_efi_cfg() { + s = d.getVar("S", True) + labels = d.getVar('LABELS', True) + if not labels: + bb.debug(1, "LABELS not defined, nothing to do") + return + + if labels == []: + bb.debug(1, "No labels, nothing to do") + return + + cfile = d.getVar('GUMMIBOOT_CFG', True) + try: + cfgfile = open(cfile, 'w') + except OSError: + raise bb.build.funcFailed('Unable to open %s' % (cfile)) + + cfgfile.write('# Automatically created by OE\n') + cfgfile.write('default %s\n' % (labels.split()[0])) + timeout = d.getVar('GUMMIBOOT_TIMEOUT', True) + if timeout: + cfgfile.write('timeout %s\n' % timeout) + else: + cfgfile.write('timeout 10\n') + cfgfile.close() + + for label in labels.split(): + localdata = d.createCopy() + + overrides = localdata.getVar('OVERRIDES', True) + if not overrides: + raise bb.build.FuncFailed('OVERRIDES not defined') + + entryfile = "%s/%s.conf" % (s, label) + d.appendVar("GUMMIBOOT_ENTRIES", " " + entryfile) + try: + entrycfg = open(entryfile, "w") + except OSError: + raise bb.build.funcFailed('Unable to open %s' % (entryfile)) + localdata.setVar('OVERRIDES', label + ':' + overrides) + bb.data.update_data(localdata) + + entrycfg.write('title %s\n' % label) + entrycfg.write('linux /vmlinuz\n') + + append = localdata.getVar('APPEND', True) + initrd = localdata.getVar('INITRD', True) + + if initrd: + entrycfg.write('initrd /initrd\n') + lb = label + if label == "install": + lb = "install-efi" + entrycfg.write('options LABEL=%s ' % lb) + if append: + entrycfg.write('%s' % append) + entrycfg.write('\n') + entrycfg.close() +} diff --git a/meta/classes/image-mklibs.bbclass b/meta/classes/image-mklibs.bbclass index 66b0f5251e2..23456ccd96f 100644 --- a/meta/classes/image-mklibs.bbclass +++ b/meta/classes/image-mklibs.bbclass @@ -9,7 +9,7 @@ mklibs_optimize_image_doit() { du -bs > ${WORKDIR}/mklibs/du.before.mklibs.txt for i in `find .`; do file $i; done \ | grep ELF \ - | grep "LSB executable" \ + | grep "LSB *executable" \ | grep "dynamically linked" \ | sed "s/:.*//" \ | sed "s+^\./++" \ @@ -40,6 +40,7 @@ mklibs_optimize_image_doit() { --ldlib ${dynamic_loader} \ --libdir ${baselib} \ --sysroot ${PKG_CONFIG_SYSROOT_DIR} \ + --gcc-options "--sysroot=${PKG_CONFIG_SYSROOT_DIR}" \ --root ${IMAGE_ROOTFS} \ --target `echo ${TARGET_PREFIX} | sed 's/-$//' ` \ -d ${WORKDIR}/mklibs/dest \ diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass index 8c491695337..f4938d14bde 100644 --- a/meta/classes/image_types.bbclass +++ b/meta/classes/image_types.bbclass @@ -161,6 +161,7 @@ IMAGE_CMD_ext3 = "oe_mkext234fs ext3 ${EXTRA_IMAGECMD}" IMAGE_CMD_ext4 = "oe_mkext234fs ext4 ${EXTRA_IMAGECMD}" IMAGE_CMD_btrfs () { + touch ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.btrfs mkfs.btrfs -b `expr ${ROOTFS_SIZE} \* 1024` ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.btrfs } diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index 8f799324384..c966cb8529f 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass @@ -196,7 +196,7 @@ do_kernel_checkout() { # If KMETA is defined, the branch must exist, but a machine branch # can be missing since it may be created later by the tools. if [ -n "${KMETA}" ]; then - git branch -a | grep -q ${KMETA} + git branch -a --no-color | grep -q ${KMETA} if [ $? -ne 0 ]; then echo "ERROR. The branch '${KMETA}' is required and was not" echo "found. Ensure that the SRC_URI points to a valid linux-yocto" @@ -214,7 +214,7 @@ do_kernel_checkout() { fi # convert any remote branches to local tracking ones - for i in `git branch -a | grep remotes | grep -v HEAD`; do + for i in `git branch -a --no-color | grep remotes | grep -v HEAD`; do b=`echo $i | cut -d' ' -f2 | sed 's%remotes/origin/%%'`; git show-ref --quiet --verify -- "refs/heads/$b" if [ $? -ne 0 ]; then diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass index f40ea8985d6..61a6d102d7a 100644 --- a/meta/classes/kernel.bbclass +++ b/meta/classes/kernel.bbclass @@ -152,7 +152,7 @@ python do_devshell_prepend () { os.environ["LDFLAGS"] = '' } -addtask bundle_initramfs after do_compile +addtask bundle_initramfs after do_kernel_link_vmlinux before do_build kernel_do_compile() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass index 6abdae4e84d..b00ebb12e2c 100644 --- a/meta/classes/license.bbclass +++ b/meta/classes/license.bbclass @@ -72,9 +72,9 @@ license_create_manifest() { # Really don't need to copy the generics as they're # represented in the manifest and in the actual pkg licenses # Doing so would make your image quite a bit larger - if [[ "${lic}" != "generic_"* ]]; then + if [ "${lic#generic_}" = "${lic}" ]; then cp ${LICENSE_DIRECTORY}/${pkg}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/${pkg}/${lic} - elif [[ "${lic}" == "generic_"* ]]; then + else if [ ! -f ${IMAGE_ROOTFS}/usr/share/common-licenses/${lic} ]; then cp ${LICENSE_DIRECTORY}/${pkg}/${lic} ${IMAGE_ROOTFS}/usr/share/common-licenses/ fi diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass index ed276ef0a49..94bc3266718 100644 --- a/meta/classes/nativesdk.bbclass +++ b/meta/classes/nativesdk.bbclass @@ -59,7 +59,7 @@ export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}" python nativesdk_virtclass_handler () { pn = e.data.getVar("PN", True) - if not pn.endswith("-nativesdk") or pn.startswith("nativesdk-"): + if not (pn.endswith("-nativesdk") or pn.startswith("nativesdk-")): return e.data.setVar("MLPREFIX", "nativesdk-") diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 36bad09ea1d..4f4bda32a40 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass @@ -296,11 +296,7 @@ package_install_internal_rpm () { if [ ! -z "$INSTALL_PLATFORM_EXTRA_RPM" ]; then for pt in $INSTALL_PLATFORM_EXTRA_RPM ; do channel_priority=$(expr $channel_priority + 5) - case $pt in - noarch-* | any-* | all-*) - pt=$(echo $pt | sed "s,-linux.*$,-linux\.*,") - ;; - esac + pt=$(echo $pt | sed "s,-linux.*$,-linux\.*,") echo "$pt" >> ${target_rootfs}/etc/rpm/platform done fi diff --git a/meta/classes/pixbufcache.bbclass b/meta/classes/pixbufcache.bbclass index d46a8ba206b..0fe5163912a 100644 --- a/meta/classes/pixbufcache.bbclass +++ b/meta/classes/pixbufcache.bbclass @@ -65,5 +65,5 @@ pixbufcache_sstate_postinst() { # Packages that use this class should extend this variable with their runtime # dependencies. PIXBUFCACHE_SYSROOT_DEPS = "" -PIXBUFCACHE_SYSROOT_DEPS_class-native = "${@['gdk-pixbuf-native:do_populate_sysroot_setscene', '']['${BPN}' == 'gdk-pixbuf']} glib-2.0-native:do_populate_sysroot_setscene libffi-native:do_populate_sysroot_setscene libpng-native:do_populate_sysroot_setscene" +PIXBUFCACHE_SYSROOT_DEPS_class-native = "${@['gdk-pixbuf-native:do_populate_sysroot_setscene', '']['${BPN}' == 'gdk-pixbuf']} glib-2.0-native:do_populate_sysroot_setscene libffi-native:do_populate_sysroot_setscene libpng-native:do_populate_sysroot_setscene zlib-native:do_populate_sysroot_setscene" do_populate_sysroot_setscene[depends] += "${PIXBUFCACHE_SYSROOT_DEPS}" diff --git a/meta/classes/ptest.bbclass b/meta/classes/ptest.bbclass index d67b4e659fc..7cc8d26d8c2 100644 --- a/meta/classes/ptest.bbclass +++ b/meta/classes/ptest.bbclass @@ -10,7 +10,7 @@ PTEST_PATH ?= "${libdir}/${PN}/ptest" FILES_${PN}-ptest = "${PTEST_PATH}" SECTION_${PN}-ptest = "devel" ALLOW_EMPTY_${PN}-ptest = "1" -PTEST_ENABLED = "${@base_contains("DISTRO_FEATURES", "ptest", "1", "0", d)}" +PTEST_ENABLED = "${@base_contains('DISTRO_FEATURES', 'ptest', '1', '0', d)}" RDEPENDS_${PN}-ptest_virtclass-native = "" RDEPENDS_${PN}-ptest_virtclass-nativesdk = "" diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass index b1c52f9dd69..8613032f2aa 100644 --- a/meta/classes/rootfs_deb.bbclass +++ b/meta/classes/rootfs_deb.bbclass @@ -91,8 +91,9 @@ fakeroot rootfs_deb_do_rootfs () { ${ROOTFS_POSTPROCESS_COMMAND} if ${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "true", "false" ,d)}; then - if [ -n "$(delayed_postinsts)" ]; then - bberror "Some packages could not be configured offline and rootfs is read-only." + delayed_postinsts="$(delayed_postinsts)" + if [ -n "$delayed_postinsts" ]; then + bberror "The following packages could not be configured offline and rootfs is read-only: $delayed_postinsts" exit 1 fi fi diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass index b0805dc3297..6ce3e5d908a 100644 --- a/meta/classes/rootfs_ipk.bbclass +++ b/meta/classes/rootfs_ipk.bbclass @@ -89,8 +89,9 @@ fakeroot rootfs_ipk_do_rootfs () { ${ROOTFS_POSTPROCESS_COMMAND} if ${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "true", "false" ,d)}; then - if [ -n "$(delayed_postinsts)" ]; then - bberror "Some packages could not be configured offline and rootfs is read-only." + delayed_postinsts="$(delayed_postinsts)" + if [ -n "$delayed_postinsts" ]; then + bberror "The following packages could not be configured offline and rootfs is read-only: $delayed_postinsts" exit 1 fi fi diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass index 6c68ac89fb4..1a0c2255a9f 100644 --- a/meta/classes/rootfs_rpm.bbclass +++ b/meta/classes/rootfs_rpm.bbclass @@ -115,8 +115,9 @@ fakeroot rootfs_rpm_do_rootfs () { if ${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "true", "false" ,d)}; then if [ -d ${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts ] ; then - if [ "`ls -A ${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts`" != "" ] ; then - bberror "Some packages could not be configured offline and rootfs is read-only." + failed_pkgs=$(ls -A ${IMAGE_ROOTFS}${sysconfdir}/rpm-postinsts) + if [ -n "$failed_pkgs" ] ; then + bberror "The following post-install scripts could not be run offline and rootfs is read-only: $failed_pkgs" exit 1 fi fi diff --git a/meta/classes/syslinux.bbclass b/meta/classes/syslinux.bbclass index 944bd92da25..2a5b7660bc7 100644 --- a/meta/classes/syslinux.bbclass +++ b/meta/classes/syslinux.bbclass @@ -27,7 +27,7 @@ SYSLINUXDIR = "/" # a console=...some_tty... SYSLINUX_DEFAULT_CONSOLE ?= "" SYSLINUX_SERIAL ?= "0 115200" -SYSLINUX_SERIAL_TTY ?= "ttyS0,115200" +SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200" ISO_BOOTIMG = "isolinux/isolinux.bin" ISO_BOOTCAT = "isolinux/boot.cat" MKISOFS_OPTIONS = "-no-emul-boot -boot-load-size 4 -boot-info-table" diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass index 0a533afb1f6..d1f6563a0a2 100644 --- a/meta/classes/utils.bbclass +++ b/meta/classes/utils.bbclass @@ -307,11 +307,10 @@ def base_set_filespath(path, d): if extrapaths != "": path = extrapaths.split(":") + path # The ":" ensures we have an 'empty' override - overrides = (":" + (d.getVar("FILESOVERRIDES", True) or "")).split(":") - overrides.reverse() - for o in overrides: - for p in path: - if p != "": + overrides = ((d.getVar("FILESOVERRIDES", True) or "") + ":").split(":") + for p in path: + if p != "": + for o in overrides: filespath.append(os.path.join(p, o)) return ":".join(filespath) diff --git a/meta/classes/vala.bbclass b/meta/classes/vala.bbclass index c7db08ceebd..0b7803b251d 100644 --- a/meta/classes/vala.bbclass +++ b/meta/classes/vala.bbclass @@ -1,9 +1,12 @@ # Vala has problems with multiple concurrent invocations PARALLEL_MAKE = "" -# Vala needs vala-native -DEPENDS += "vala-native" -DEPENDS_virtclass-native += "vala-native" +# Everyone needs vala-native and targets need vala, too, +# because that is where target builds look for .vapi files. +# +VALADEPENDS = "" +VALADEPENDS_class-target = "vala" +DEPENDS_append = " vala-native ${VALADEPENDS}" # Our patched version of Vala looks in STAGING_DATADIR for .vapi files export STAGING_DATADIR diff --git a/meta/files/device_table-minimal.txt b/meta/files/device_table-minimal.txt index 6ac741a9779..56c74bb71e3 100644 --- a/meta/files/device_table-minimal.txt +++ b/meta/files/device_table-minimal.txt @@ -12,8 +12,8 @@ /dev/initctl p 600 root root - - - - - /dev/apm_bios c 660 root plugdev 10 134 - - - /dev/fb0 c 600 root root 29 0 - - - -/dev/hda b 660 root root 3 0 - - - -/dev/hda b 660 root root 3 1 1 1 19 +/dev/hda b 660 root disk 3 0 - - - +/dev/hda b 660 root disk 3 1 1 1 19 /dev/kmem c 640 root kmem 1 2 - - - /dev/kmsg c 600 root root 1 11 - - - /dev/mem c 640 root kmem 1 1 - - - diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py index 86b5a123472..ffe12d0023b 100644 --- a/meta/lib/oe/buildhistory_analysis.py +++ b/meta/lib/oe/buildhistory_analysis.py @@ -400,7 +400,7 @@ def process_changes(repopath, revision1, revision2 = 'HEAD', report_all = False) chg = ChangeRecord(path, filename, d.a_blob.data_stream.read(), d.b_blob.data_stream.read(), True) changes.append(chg) elif filename == 'image-info.txt': - changes.extend(compare_dict_blobs(path, d.a_blob, d.b_blob, report_all)) + changes.extend(compare_dict_blobs(path, d.a_blob, d.b_blob, report_all, report_ver)) elif '/image-files/' in path: chg = ChangeRecord(path, filename, d.a_blob.data_stream.read(), d.b_blob.data_stream.read(), True) changes.append(chg) diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch new file mode 100644 index 00000000000..e5b47c197a3 --- /dev/null +++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch @@ -0,0 +1,48 @@ +Fix parallel make failure for archives + +Upstream-Status: Pending + +The lib and gnuefi makefiles were using the lib.a() form which compiles +and ar's as a pair instead of compiling all and then ar'ing which can +parallelize better. This was resulting in build failures on larger values +of -j. + +See http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_toc.html#TOC105 +for details. + +Signed-off-by: Saul Wold +Signed-off-by: Darren Hart +--- +--- + gnuefi/Makefile | 3 ++- + lib/Makefile | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +Index: gnu-efi-3.0/lib/Makefile +=================================================================== +--- gnu-efi-3.0.orig/lib/Makefile ++++ gnu-efi-3.0/lib/Makefile +@@ -66,7 +66,8 @@ all: libsubdirs libefi.a + libsubdirs: + for sdir in $(SUBDIRS); do mkdir -p $$sdir; done + +-libefi.a: $(patsubst %,libefi.a(%),$(OBJS)) ++libefi.a: $(OBJS) ++ $(AR) rv $@ $(OBJS) + + clean: + rm -f libefi.a *~ $(OBJS) */*.o +Index: gnu-efi-3.0/gnuefi/Makefile +=================================================================== +--- gnu-efi-3.0.orig/gnuefi/Makefile ++++ gnu-efi-3.0/gnuefi/Makefile +@@ -51,7 +51,8 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a + + all: $(TARGETS) + +-libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS)) ++libgnuefi.a: $(OBJS) ++ $(AR) rv $@ $(OBJS) + + clean: + rm -f $(TARGETS) *~ *.o $(OBJS) diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch new file mode 100644 index 00000000000..27c94e8a743 --- /dev/null +++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch @@ -0,0 +1,22 @@ +Fix parallel make failure + +Upstream-Status: Submitted [Maintainer directly] + +Add a missing dependency which resulted in a race leading to failure +on larger values of -j. + +Signed-off-by: Darren Hart + +Index: gnu-efi-3.0/Makefile +=================================================================== +--- gnu-efi-3.0.orig/Makefile ++++ gnu-efi-3.0/Makefile +@@ -42,6 +42,8 @@ include $(SRCDIR)/Make.defaults + + SUBDIRS = lib gnuefi inc apps + ++gnuefi: lib ++ + all: check_gcc $(SUBDIRS) + + $(SUBDIRS): diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb new file mode 100644 index 00000000000..8026b31bd7b --- /dev/null +++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb @@ -0,0 +1,39 @@ +SUMMARY = "Libraries for producing EFI binaries" +HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/" +SECTION = "devel" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://debian/copyright;md5=5fb358a180f484b285b0d99acdc29666" + +SRC_URI = "http://downloads.sourceforge.net/gnu-efi/gnu-efi_3.0u.orig.tar.gz \ + file://parallel-make.patch \ + file://parallel-make-archives.patch \ + " +SRC_URI[md5sum] = "d15d3c700e79a1e2938544d73edc572d" +SRC_URI[sha256sum] = "3c0d450d5829204ca05dcb3b2aae772e52c379b7c7e09146759c6315606f934e" + +COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux" + +S = "${WORKDIR}/gnu-efi-3.0" + +def gnu_efi_arch(d): + import re + tarch = d.getVar("TARGET_ARCH", True) + if re.match("i[3456789]86", tarch): + return "ia32" + return tarch + +EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \ + 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}'\ + " + +do_install() { + oe_runmake install INSTALLROOT="${D}" +} + +do_install_class-native() { + oe_runmake install +} + +FILES_${PN} += "${libdir}/*.lds" + +BBCLASSEXTEND = "native" diff --git a/meta/recipes-bsp/grub/files/grub-efinet-tftp.patch b/meta/recipes-bsp/grub/files/grub-efinet-tftp.patch new file mode 100644 index 00000000000..bfdbbbce448 --- /dev/null +++ b/meta/recipes-bsp/grub/files/grub-efinet-tftp.patch @@ -0,0 +1,173 @@ +diff -Naurp grub-2.00.orig/grub-core/net/drivers/efi/efinet.c grub-2.00/grub-core/net/drivers/efi/efinet.c +--- grub-2.00.orig/grub-core/net/drivers/efi/efinet.c 2012-06-19 02:27:47.000000000 -0700 ++++ grub-2.00/grub-core/net/drivers/efi/efinet.c 2014-07-03 22:37:24.648094324 -0700 +@@ -36,38 +36,55 @@ send_card_buffer (struct grub_net_card * + { + grub_efi_status_t st; + grub_efi_simple_network_t *net = dev->efi_net; +- grub_uint64_t limit_time = grub_get_time_ms () + 4000; +- grub_size_t len; ++ grub_uint32_t int_status; ++ int i; + +- if (dev->txbusy) +- while (1) +- { +- void *txbuf = NULL; +- st = efi_call_3 (net->get_status, net, 0, &txbuf); +- if (st != GRUB_EFI_SUCCESS) +- return grub_error (GRUB_ERR_IO, +- N_("couldn't send network packet")); +- if (txbuf == dev->txbuf) +- { +- dev->txbusy = 0; +- break; +- } +- if (limit_time < grub_get_time_ms ()) +- return grub_error (GRUB_ERR_TIMEOUT, N_("couldn't send network packet")); +- } +- +- len = (pack->tail - pack->data); +- if (len > dev->mtu) +- len = dev->mtu; +- +- grub_memcpy (dev->txbuf, pack->data, len); +- +- st = efi_call_7 (net->transmit, net, 0, len, +- dev->txbuf, NULL, NULL, NULL); +- if (st != GRUB_EFI_SUCCESS) +- return grub_error (GRUB_ERR_IO, N_("couldn't send network packet")); +- dev->txbusy = 1; +- return GRUB_ERR_NONE; ++ for (i = 0; i < 3; i++) ++ { ++ grub_uint64_t limit_time; ++ ++ efi_call_3 (net->get_status, net, &int_status, 0); ++ ++ limit_time = grub_get_time_ms () + 5; ++ for (;;) ++ { ++ st = efi_call_7 (net->transmit, net, 0, (pack->tail - pack->data), ++ pack->data, NULL, NULL, NULL); ++ if (st != GRUB_EFI_NOT_READY) ++ break; ++ ++ if (limit_time < grub_get_time_ms ()) ++ { ++ st = GRUB_EFI_TIMEOUT; ++ break; ++ } ++ } ++ ++ if (st) ++ goto quit; ++ ++ void *txbuf = NULL; ++ limit_time = grub_get_time_ms () + 5; ++ for (;;) ++ { ++ st = efi_call_3 (net->get_status, net, &int_status, &txbuf); ++ ++ if (txbuf != NULL) ++ break; ++ ++ if (limit_time < grub_get_time_ms ()) ++ { ++ st = GRUB_EFI_TIMEOUT; ++ break; ++ } ++ } ++ ++ quit: ++ if (st != GRUB_EFI_TIMEOUT) ++ break; ++ } ++ ++ return st; + } + + static struct grub_net_buff * +diff -Naurp grub-2.00.orig/grub-core/net/tftp.c grub-2.00/grub-core/net/tftp.c +--- grub-2.00.orig/grub-core/net/tftp.c 2012-06-22 08:42:07.000000000 -0700 ++++ grub-2.00/grub-core/net/tftp.c 2014-07-03 22:34:35.000085875 -0700 +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + GRUB_MOD_LICENSE ("GPLv3+"); + +@@ -143,7 +144,7 @@ ack (tftp_data_t data, grub_uint16_t blo + + tftph_ack = (struct tftphdr *) nb_ack.data; + tftph_ack->opcode = grub_cpu_to_be16 (TFTP_ACK); +- tftph_ack->u.ack.block = block; ++ tftph_ack->u.ack.block = grub_cpu_to_be16 (block); + + err = grub_net_send_udp_packet (data->sock, &nb_ack); + if (err) +@@ -162,8 +163,8 @@ tftp_receive (grub_net_udp_socket_t sock + tftp_data_t data = file->data; + grub_err_t err; + grub_uint8_t *ptr; +- +- if (nb->tail - nb->data < (grub_ssize_t) sizeof (tftph->opcode)) ++ ++if (nb->tail - nb->data < (grub_ssize_t) sizeof (tftph->opcode)) + { + grub_dprintf ("tftp", "TFTP packet too small\n"); + return GRUB_ERR_NONE; +@@ -223,9 +224,9 @@ tftp_receive (grub_net_udp_socket_t sock + unsigned size; + + grub_priority_queue_pop (data->pq); +- +- if (file->device->net->packs.count < 50) +- err = ack (data, tftph->u.data.block); ++ ++ if (file->device->net->packs.count < 50) ++ err = ack (data, data->block + 1); + else + { + file->device->net->stall = 1; +@@ -304,6 +305,7 @@ tftp_open (struct grub_file *file, const + grub_err_t err; + grub_uint8_t *nbd; + grub_net_network_level_address_t addr; ++ const char *block_size; + + data = grub_zalloc (sizeof (*data)); + if (!data) +@@ -335,11 +337,14 @@ tftp_open (struct grub_file *file, const + grub_strcpy (rrq, "blksize"); + rrqlen += grub_strlen ("blksize") + 1; + rrq += grub_strlen ("blksize") + 1; +- +- grub_strcpy (rrq, "1024"); +- rrqlen += grub_strlen ("1024") + 1; +- rrq += grub_strlen ("1024") + 1; +- ++ ++ block_size = grub_env_get ("tftp_block_size"); ++ if (block_size == NULL) ++ block_size = "8192"; ++ grub_strcpy (rrq, block_size); ++ rrqlen += grub_strlen (block_size) + 1; ++ rrq += grub_strlen (block_size) + 1; ++ + grub_strcpy (rrq, "tsize"); + rrqlen += grub_strlen ("tsize") + 1; + rrq += grub_strlen ("tsize") + 1; +diff -Naurp grub-2.00.orig/include/grub/net.h grub-2.00/include/grub/net.h +--- grub-2.00.orig/include/grub/net.h 2012-06-22 04:46:25.000000000 -0700 ++++ grub-2.00/include/grub/net.h 2014-06-07 00:32:42.000000000 -0700 +@@ -139,6 +139,7 @@ struct grub_net_card + { + struct grub_efi_simple_network *efi_net; + grub_efi_handle_t efi_handle; ++ grub_size_t last_pkt_size; + }; + #endif + void *data; diff --git a/meta/recipes-bsp/grub/grub-efi-native_2.00.bb b/meta/recipes-bsp/grub/grub-efi-native_2.00.bb index 04973b524fc..c67aec1d46a 100644 --- a/meta/recipes-bsp/grub/grub-efi-native_2.00.bb +++ b/meta/recipes-bsp/grub/grub-efi-native_2.00.bb @@ -31,6 +31,7 @@ SRC_URI = "ftp://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \ file://grub-no-unused-result.patch \ file://grub-2.00-ignore-gnulib-gets-stupidity.patch \ file://fix-issue-with-flex-2.5.37.patch \ + file://grub-efinet-tftp.patch \ " SRC_URI[md5sum] = "e927540b6eda8b024fb0391eeaa4091c" SRC_URI[sha256sum] = "65b39a0558f8c802209c574f4d02ca263a804e8a564bc6caf1cd0fd3b3cc11e3" diff --git a/meta/recipes-bsp/grub/grub_2.00.bb b/meta/recipes-bsp/grub/grub_2.00.bb index e82996d466e..f8b68e4a17f 100644 --- a/meta/recipes-bsp/grub/grub_2.00.bb +++ b/meta/recipes-bsp/grub/grub_2.00.bb @@ -12,7 +12,7 @@ LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" DEPENDS = "autogen-native flex-native" -RDEPENDS_${PN} = "diffutils freetype" +RDEPENDS_${PN} = "diffutils freetype xz" PR = "r1" SRC_URI = "ftp://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \ diff --git a/meta/recipes-bsp/gummiboot/gummiboot_git.bb b/meta/recipes-bsp/gummiboot/gummiboot_git.bb new file mode 100644 index 00000000000..5868a23ae87 --- /dev/null +++ b/meta/recipes-bsp/gummiboot/gummiboot_git.bb @@ -0,0 +1,25 @@ +SUMMARY = "Gummiboot is a simple UEFI boot manager which executes configured EFI images." +HOMEPAGE = "http://freedesktop.org/wiki/Software/gummiboot" + +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c" + +DEPENDS = "gnu-efi util-linux" + +inherit autotools +inherit deploy + +PV = "43+git${SRCPV}" +SRCREV = "4062c51075ba054d4949c714fe06123f9ad3097d" +SRC_URI = "git://anongit.freedesktop.org/gummiboot" + +S = "${WORKDIR}/git" + +EXTRA_OECONF = "--disable-manpages --with-efi-includedir=${STAGING_INCDIR} \ + --with-efi-ldsdir=${STAGING_LIBDIR} \ + --with-efi-libdir=${STAGING_LIBDIR}" + +do_deploy () { + install ${B}/gummiboot*.efi ${DEPLOYDIR} +} +addtask deploy before do_build after do_compile diff --git a/meta/recipes-connectivity/irda-utils/irda-utils-0.9.18/init b/meta/recipes-connectivity/irda-utils/irda-utils-0.9.18/init index b8038e08a30..6f29e9c6ed4 100755 --- a/meta/recipes-connectivity/irda-utils/irda-utils-0.9.18/init +++ b/meta/recipes-connectivity/irda-utils/irda-utils-0.9.18/init @@ -8,6 +8,10 @@ # Short-Description: Infrared port support ### END INIT INFO +NAME="irattach" +test -x "$IRDA_DAEMON" || IRDA_DAEMON=/usr/sbin/irattach +test -z "$IRATTACH_PID" && IRATTACH_PID=/var/run/irattach.pid + # Source function library. . /etc/init.d/functions @@ -49,30 +53,26 @@ fi case "$1" in start) - echo -n "Starting IrDA: " - irattach ${DEVICE} ${ARGS} > /dev/null 2>&1 & - echo "$NAME." - ;; + echo -n "Starting IrDA: $NAME" + start-stop-daemon --start --quiet --exec "$IRDA_DAEMON" ${DEVICE} ${ARGS} --pidfile "$IRATTACH_PID" + sleep 1 + [ -f /var/run/irattach.pid ] && echo " done" || echo " fail" + ;; stop) - echo -n "Stopping IrDA: " - killall irattach > /dev/null 2>&1 - echo "$NAME." - ;; + echo "Stopping IrDA: $NAME" + start-stop-daemon --stop --quiet --exec "$IRDA_DAEMON" --pidfile "$IRATTACH_PID" + ;; restart|force-reload) - echo -n "Restarting IrDA: " - irattach ${DEVICE} ${ARGS} > /dev/null 2>&1 & - sleep 1 - killall irattach > /dev/null 2>&1 - echo "$NAME." - ;; + $0 stop + $0 start + ;; status) status irattach exit $? ;; *) - N=/etc/init.d/$NAME - echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 - exit 1 - ;; + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 + exit 1 + ;; esac - diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver index 1ac6fec0238..c263f14f32c 100644 --- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver @@ -25,6 +25,7 @@ test -r /etc/default/nfsd && . /etc/default/nfsd test -x "$NFS_MOUNTD" || NFS_MOUNTD=/usr/sbin/rpc.mountd test -x "$NFS_NFSD" || NFS_NFSD=/usr/sbin/rpc.nfsd test -x "$NFS_STATD" || NFS_STATD=/usr/sbin/rpc.statd +test -z "$STATD_PID" && STATD_PID=/var/run/rpc.statd.pid # # The user mode program must also exist (it just starts the kernel # threads using the kernel module code). @@ -77,6 +78,17 @@ stop_mountd(){ # #nfsd start_nfsd(){ + modprobe -q nfsd + grep -q nfsd /proc/filesystems || { + echo NFS daemon support not enabled in kernel + exit 1 + } + grep -q nfsd /proc/mounts || mount -t nfsd nfsd /proc/fs/nfsd + grep -q nfsd /proc/mounts || { + echo nfsd filesystem could not be mounted at /proc/fs/nfsd + exit 1 + } + echo -n "starting $1 nfsd kernel threads: " start-stop-daemon --start --exec "$NFS_NFSD" -- "$@" echo done @@ -115,14 +127,12 @@ stop_nfsd(){ #statd start_statd(){ echo -n "starting statd: " - start-stop-daemon --start --exec "$NFS_STATD" + start-stop-daemon --start --exec "$NFS_STATD" --pidfile "$STATD_PID" echo done } stop_statd(){ - # WARNING: this kills any process with the executable - # name 'statd'. echo -n 'stopping statd: ' - start-stop-daemon --stop --quiet --signal 1 --name statd + start-stop-daemon --stop --quiet --signal 1 --pidfile "$STATD_PID" echo done } #---------------------------------------------------------------------- @@ -134,31 +144,26 @@ stop_statd(){ # restart: stops and starts mountd #FIXME: need to create the /var/lib/nfs/... directories case "$1" in -start) create_directories + start) create_directories start_nfsd "$NFS_SERVERS" start_mountd start_statd test -r /etc/exports && exportfs -a;; -stop) exportfs -ua + stop) exportfs -ua stop_statd stop_mountd stop_nfsd;; -status) + status) status /usr/sbin/rpc.mountd RETVAL=$? status nfsd rval=$? [ $RETVAL -eq 0 ] && exit $rval exit $RETVAL;; -reload) test -r /etc/exports && exportfs -r;; -restart)exportfs -ua - stop_mountd - stop_statd - # restart does not restart the kernel threads, - # only the user mode processes - start_mountd - start_statd - test -r /etc/exports && exportfs -a;; -*) echo "Usage: $0 {start|stop|status|reload|restart}" + reload) test -r /etc/exports && exportfs -r;; + restart) + $0 stop + $0 start;; + *) echo "Usage: $0 {start|stop|status|reload|restart}" exit 1;; esac diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.8.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.8.bb index e3e8136c278..580755ce044 100644 --- a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.8.bb +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.2.8.bb @@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=95f3a93a5c3c7888de623b46ea085a84" # util-linux for libblkid DEPENDS = "libcap libnfsidmap libevent util-linux sqlite3" -RDEPENDS_${PN} = "rpcbind" +RDEPENDS_${PN} = "rpcbind bash" RRECOMMENDS_${PN} = "kernel-module-nfsd" SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.bz2 \ diff --git a/meta/recipes-connectivity/openssh/openssh-6.2p2/init b/meta/recipes-connectivity/openssh/openssh-6.2p2/init index 266689c2cf3..e7f39713244 100644 --- a/meta/recipes-connectivity/openssh/openssh-6.2p2/init +++ b/meta/recipes-connectivity/openssh/openssh-6.2p2/init @@ -97,7 +97,7 @@ case "$1" in status) status /usr/sbin/sshd - return $? + exit $? ;; *) diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Fix-DTLS-retransmission-from-previous-session.patch b/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Fix-DTLS-retransmission-from-previous-session.patch new file mode 100644 index 00000000000..39592e2d675 --- /dev/null +++ b/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Fix-DTLS-retransmission-from-previous-session.patch @@ -0,0 +1,81 @@ +From 34628967f1e65dc8f34e000f0f5518e21afbfc7b Mon Sep 17 00:00:00 2001 +From: "Dr. Stephen Henson" +Date: Fri, 20 Dec 2013 15:26:50 +0000 +Subject: [PATCH] Fix DTLS retransmission from previous session. + +Upstream-Status: Backport +commit 34628967f1e65dc8f34e000f0f5518e21afbfc7b upstream + +For DTLS we might need to retransmit messages from the previous session +so keep a copy of write context in DTLS retransmission buffers instead +of replacing it after sending CCS. CVE-2013-6450. +--- + ssl/d1_both.c | 6 ++++++ + ssl/ssl_locl.h | 2 ++ + ssl/t1_enc.c | 17 +++++++++++------ + 4 files changed, 24 insertions(+), 6 deletions(-) + +diff --git a/ssl/d1_both.c b/ssl/d1_both.c +index 65ec001..7a5596a 100644 +--- a/ssl/d1_both.c ++++ b/ssl/d1_both.c +@@ -214,6 +214,12 @@ dtls1_hm_fragment_new(unsigned long frag_len, int reassembly) + static void + dtls1_hm_fragment_free(hm_fragment *frag) + { ++ ++ if (frag->msg_header.is_ccs) ++ { ++ EVP_CIPHER_CTX_free(frag->msg_header.saved_retransmit_state.enc_write_ctx); ++ EVP_MD_CTX_destroy(frag->msg_header.saved_retransmit_state.write_hash); ++ } + if (frag->fragment) OPENSSL_free(frag->fragment); + if (frag->reassembly) OPENSSL_free(frag->reassembly); + OPENSSL_free(frag); +diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h +index 96ce9a7..e485907 100644 +--- a/ssl/ssl_locl.h ++++ b/ssl/ssl_locl.h +@@ -621,6 +621,8 @@ extern SSL3_ENC_METHOD TLSv1_enc_data; + extern SSL3_ENC_METHOD SSLv3_enc_data; + extern SSL3_ENC_METHOD DTLSv1_enc_data; + ++#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION) ++ + #define IMPLEMENT_tls_meth_func(version, func_name, s_accept, s_connect, \ + s_get_meth) \ + const SSL_METHOD *func_name(void) \ +diff --git a/ssl/t1_enc.c b/ssl/t1_enc.c +index 72015f5..56db834 100644 +--- a/ssl/t1_enc.c ++++ b/ssl/t1_enc.c +@@ -414,15 +414,20 @@ int tls1_change_cipher_state(SSL *s, int which) + s->mac_flags |= SSL_MAC_FLAG_WRITE_MAC_STREAM; + else + s->mac_flags &= ~SSL_MAC_FLAG_WRITE_MAC_STREAM; +- if (s->enc_write_ctx != NULL) ++ if (s->enc_write_ctx != NULL && !SSL_IS_DTLS(s)) + reuse_dd = 1; +- else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL) ++ else if ((s->enc_write_ctx=EVP_CIPHER_CTX_new()) == NULL) + goto err; +- else +- /* make sure it's intialized in case we exit later with an error */ +- EVP_CIPHER_CTX_init(s->enc_write_ctx); + dd= s->enc_write_ctx; +- mac_ctx = ssl_replace_hash(&s->write_hash,NULL); ++ if (SSL_IS_DTLS(s)) ++ { ++ mac_ctx = EVP_MD_CTX_create(); ++ if (!mac_ctx) ++ goto err; ++ s->write_hash = mac_ctx; ++ } ++ else ++ mac_ctx = ssl_replace_hash(&s->write_hash,NULL); + #ifndef OPENSSL_NO_COMP + if (s->compress != NULL) + { +-- +1.7.5.4 + diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Fix-for-TLS-record-tampering-bug-CVE-2013-4353.patch b/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Fix-for-TLS-record-tampering-bug-CVE-2013-4353.patch new file mode 100644 index 00000000000..d03dc06dafe --- /dev/null +++ b/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Fix-for-TLS-record-tampering-bug-CVE-2013-4353.patch @@ -0,0 +1,31 @@ +From 197e0ea817ad64820789d86711d55ff50d71f631 Mon Sep 17 00:00:00 2001 +From: "Dr. Stephen Henson" +Date: Mon, 6 Jan 2014 14:35:04 +0000 +Subject: [PATCH] Fix for TLS record tampering bug CVE-2013-4353 + +Upstream-Status: Backport +commit 197e0ea817ad64820789d86711d55ff50d71f631 upstream + + ssl/s3_both.c | 6 +++++- + 3 files changed, 11 insertions(+), 1 deletions(-) + +diff --git a/ssl/s3_both.c b/ssl/s3_both.c +index 1e5dcab..53b9390 100644 +--- a/ssl/s3_both.c ++++ b/ssl/s3_both.c +@@ -210,7 +210,11 @@ static void ssl3_take_mac(SSL *s) + { + const char *sender; + int slen; +- ++ /* If no new cipher setup return immediately: other functions will ++ * set the appropriate error. ++ */ ++ if (s->s3->tmp.new_cipher == NULL) ++ return; + if (s->state & SSL_ST_CONNECT) + { + sender=s->method->ssl3_enc->server_finished_label; +-- +1.7.5.4 + diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Use-version-in-SSL_METHOD-not-SSL-structure.patch b/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Use-version-in-SSL_METHOD-not-SSL-structure.patch new file mode 100644 index 00000000000..e5a8ade9362 --- /dev/null +++ b/meta/recipes-connectivity/openssl/openssl-1.0.1e/0001-Use-version-in-SSL_METHOD-not-SSL-structure.patch @@ -0,0 +1,33 @@ +From ca989269a2876bae79393bd54c3e72d49975fc75 Mon Sep 17 00:00:00 2001 +From: "Dr. Stephen Henson" +Date: Thu, 19 Dec 2013 14:37:39 +0000 +Subject: [PATCH] Use version in SSL_METHOD not SSL structure. + +Upstream-Status: Backport +commit ca989269a2876bae79393bd54c3e72d49975fc75 upstream + +When deciding whether to use TLS 1.2 PRF and record hash algorithms +use the version number in the corresponding SSL_METHOD structure +instead of the SSL structure. The SSL structure version is sometimes +inaccurate. Note: OpenSSL 1.0.2 and later effectively do this already. +(CVE-2013-6449) +--- + ssl/s3_lib.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/ssl/s3_lib.c b/ssl/s3_lib.c +index bf832bb..c4ef273 100644 +--- a/ssl/s3_lib.c ++++ b/ssl/s3_lib.c +@@ -4286,7 +4286,7 @@ need to go to SSL_ST_ACCEPT. + long ssl_get_algorithm2(SSL *s) + { + long alg2 = s->s3->tmp.new_cipher->algorithm2; +- if (TLS1_get_version(s) >= TLS1_2_VERSION && ++ if (s->method->version == TLS1_2_VERSION && + alg2 == (SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF)) + return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256; + return alg2; +-- +1.7.5.4 + diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.1e/CVE-2014-0160.patch b/meta/recipes-connectivity/openssl/openssl-1.0.1e/CVE-2014-0160.patch new file mode 100644 index 00000000000..c06cd64fc6e --- /dev/null +++ b/meta/recipes-connectivity/openssl/openssl-1.0.1e/CVE-2014-0160.patch @@ -0,0 +1,118 @@ +From 96db9023b881d7cd9f379b0c154650d6c108e9a3 Mon Sep 17 00:00:00 2001 +From: "Dr. Stephen Henson" +Date: Sun, 6 Apr 2014 00:51:06 +0100 +Subject: [PATCH] Add heartbeat extension bounds check. + +A missing bounds check in the handling of the TLS heartbeat extension +can be used to reveal up to 64k of memory to a connected client or +server. + +Thanks for Neel Mehta of Google Security for discovering this bug and to +Adam Langley and Bodo Moeller for +preparing the fix (CVE-2014-0160) + +Patch (tweaked version of upstream fix without CHANGES change) borrowed +from Debian. + +Upstream-Status: Backport +Signed-off-by: Paul Eggleton + +--- + ssl/d1_both.c | 26 ++++++++++++++++++-------- + ssl/t1_lib.c | 14 +++++++++----- + 3 files changed, 36 insertions(+), 13 deletions(-) + +diff --git a/ssl/d1_both.c b/ssl/d1_both.c +index 7a5596a..2e8cf68 100644 +--- a/ssl/d1_both.c ++++ b/ssl/d1_both.c +@@ -1459,26 +1459,36 @@ dtls1_process_heartbeat(SSL *s) + unsigned int payload; + unsigned int padding = 16; /* Use minimum padding */ + +- /* Read type and payload length first */ +- hbtype = *p++; +- n2s(p, payload); +- pl = p; +- + if (s->msg_callback) + s->msg_callback(0, s->version, TLS1_RT_HEARTBEAT, + &s->s3->rrec.data[0], s->s3->rrec.length, + s, s->msg_callback_arg); + ++ /* Read type and payload length first */ ++ if (1 + 2 + 16 > s->s3->rrec.length) ++ return 0; /* silently discard */ ++ hbtype = *p++; ++ n2s(p, payload); ++ if (1 + 2 + payload + 16 > s->s3->rrec.length) ++ return 0; /* silently discard per RFC 6520 sec. 4 */ ++ pl = p; ++ + if (hbtype == TLS1_HB_REQUEST) + { + unsigned char *buffer, *bp; ++ unsigned int write_length = 1 /* heartbeat type */ + ++ 2 /* heartbeat length */ + ++ payload + padding; + int r; + ++ if (write_length > SSL3_RT_MAX_PLAIN_LENGTH) ++ return 0; ++ + /* Allocate memory for the response, size is 1 byte + * message type, plus 2 bytes payload length, plus + * payload, plus padding + */ +- buffer = OPENSSL_malloc(1 + 2 + payload + padding); ++ buffer = OPENSSL_malloc(write_length); + bp = buffer; + + /* Enter response type, length and copy payload */ +@@ -1489,11 +1499,11 @@ dtls1_process_heartbeat(SSL *s) + /* Random padding */ + RAND_pseudo_bytes(bp, padding); + +- r = dtls1_write_bytes(s, TLS1_RT_HEARTBEAT, buffer, 3 + payload + padding); ++ r = dtls1_write_bytes(s, TLS1_RT_HEARTBEAT, buffer, write_length); + + if (r >= 0 && s->msg_callback) + s->msg_callback(1, s->version, TLS1_RT_HEARTBEAT, +- buffer, 3 + payload + padding, ++ buffer, write_length, + s, s->msg_callback_arg); + + OPENSSL_free(buffer); +diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c +index b82fada..bddffd9 100644 +--- a/ssl/t1_lib.c ++++ b/ssl/t1_lib.c +@@ -2588,16 +2588,20 @@ tls1_process_heartbeat(SSL *s) + unsigned int payload; + unsigned int padding = 16; /* Use minimum padding */ + +- /* Read type and payload length first */ +- hbtype = *p++; +- n2s(p, payload); +- pl = p; +- + if (s->msg_callback) + s->msg_callback(0, s->version, TLS1_RT_HEARTBEAT, + &s->s3->rrec.data[0], s->s3->rrec.length, + s, s->msg_callback_arg); + ++ /* Read type and payload length first */ ++ if (1 + 2 + 16 > s->s3->rrec.length) ++ return 0; /* silently discard */ ++ hbtype = *p++; ++ n2s(p, payload); ++ if (1 + 2 + payload + 16 > s->s3->rrec.length) ++ return 0; /* silently discard per RFC 6520 sec. 4 */ ++ pl = p; ++ + if (hbtype == TLS1_HB_REQUEST) + { + unsigned char *buffer, *bp; +-- +1.9.1 + diff --git a/meta/recipes-connectivity/openssl/openssl.inc b/meta/recipes-connectivity/openssl/openssl.inc index 78ff7ae2f10..f4b786a1796 100644 --- a/meta/recipes-connectivity/openssl/openssl.inc +++ b/meta/recipes-connectivity/openssl/openssl.inc @@ -33,13 +33,21 @@ export AS = "${CC} -c" inherit pkgconfig siteinfo multilib_header -PACKAGES =+ "libcrypto libssl ${PN}-misc" +PACKAGES =+ "libcrypto libssl ${PN}-misc openssl-conf" FILES_libcrypto = "${base_libdir}/libcrypto${SOLIBS}" FILES_libssl = "${libdir}/libssl.so.*" FILES_${PN} =+ " ${libdir}/ssl/*" -FILES_${PN}-misc = "${libdir}/ssl/misc ${libdir}/ssl/openssl.cnf" +FILES_${PN}-misc = "${libdir}/ssl/misc" FILES_${PN}-dev += "${base_libdir}/libcrypto${SOLIBSDEV}" +# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto +# package RRECOMMENDS on this package. This will enable the configuration +# file to be installed for both the base openssl package and the libcrypto +# package since the base openssl package depends on the libcrypto package. +FILES_openssl-conf = "${libdir}/ssl/openssl.cnf" +CONFFILES_openssl-conf = "${libdir}/ssl/openssl.cnf" +RRECOMMENDS_libcrypto += "openssl-conf" + do_configure_prepend_darwin () { sed -i -e '/version-script=openssl\.ld/d' Configure } diff --git a/meta/recipes-connectivity/openssl/openssl_1.0.1e.bb b/meta/recipes-connectivity/openssl/openssl_1.0.1e.bb index ac27dba4940..bfdb25e80f7 100644 --- a/meta/recipes-connectivity/openssl/openssl_1.0.1e.bb +++ b/meta/recipes-connectivity/openssl/openssl_1.0.1e.bb @@ -6,7 +6,7 @@ DEPENDS += "ocf-linux" CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS" -PR = "${INC_PR}.0" +PR = "${INC_PR}.1" LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8" @@ -34,6 +34,10 @@ SRC_URI += "file://configure-targets.patch \ file://openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch \ file://openssl-avoid-NULL-pointer-dereference-in-dh_pub_encode.patch \ file://find.pl \ + file://0001-Fix-for-TLS-record-tampering-bug-CVE-2013-4353.patch \ + file://0001-Fix-DTLS-retransmission-from-previous-session.patch \ + file://0001-Use-version-in-SSL_METHOD-not-SSL-structure.patch \ + file://CVE-2014-0160.patch \ " SRC_URI[md5sum] = "66bf6f10f060d561929de96f9dfe5b8c" diff --git a/meta/recipes-connectivity/ppp/ppp-2.4.5/0001-ppp-Add-two-structures-in-if_pppol2tp.h.patch b/meta/recipes-connectivity/ppp/ppp-2.4.5/0001-ppp-Add-two-structures-in-if_pppol2tp.h.patch new file mode 100644 index 00000000000..33b200a3bd6 --- /dev/null +++ b/meta/recipes-connectivity/ppp/ppp-2.4.5/0001-ppp-Add-two-structures-in-if_pppol2tp.h.patch @@ -0,0 +1,60 @@ +From 17ffc69db08c809c069e73aa2f2ed2ce02df5fa8 Mon Sep 17 00:00:00 2001 +From: Lu Chong +Date: Sat, 2 Nov 2013 14:34:24 +0800 +Subject: [PATCH] ppp: Add two structures in if_pppol2tp.h + +Some further structure definitions are needed in include/linux/if_pppol2tp.h for IPv6 support. + +Upstream-Status: Pending + +Signed-off-by: Lu Chong +--- + include/linux/if_pppol2tp.h | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/include/linux/if_pppol2tp.h b/include/linux/if_pppol2tp.h +index 7ee86b2..9d626d1 100644 +--- a/include/linux/if_pppol2tp.h ++++ b/include/linux/if_pppol2tp.h +@@ -32,6 +32,20 @@ struct pppol2tp_addr { + __u16 d_tunnel, d_session; /* For sending outgoing packets */ + }; + ++/* Structure used to connect() the socket to a particular tunnel UDP ++ * socket over IPv6. ++ */ ++struct pppol2tpin6_addr { ++ __kernel_pid_t pid; /* pid that owns the fd. ++ * 0 => current */ ++ int fd; /* FD of UDP socket to use */ ++ ++ __u16 s_tunnel, s_session; /* For matching incoming packets */ ++ __u16 d_tunnel, d_session; /* For sending outgoing packets */ ++ ++ struct sockaddr_in6 addr; /* IP address and port to send to */ ++}; ++ + /* The L2TPv3 protocol changes tunnel and session ids from 16 to 32 + * bits. So we need a different sockaddr structure. + */ +@@ -46,6 +60,17 @@ struct pppol2tpv3_addr { + __u32 d_tunnel, d_session; /* For sending outgoing packets */ + }; + ++struct pppol2tpv3in6_addr { ++ __kernel_pid_t pid; /* pid that owns the fd. ++ * 0 => current */ ++ int fd; /* FD of UDP or IP socket to use */ ++ ++ __u32 s_tunnel, s_session; /* For matching incoming packets */ ++ __u32 d_tunnel, d_session; /* For sending outgoing packets */ ++ ++ struct sockaddr_in6 addr; /* IP address and port to send to */ ++}; ++ + /* Socket options: + * DEBUG - bitmask of debug message categories + * SENDSEQ - 0 => don't send packets with sequence numbers +-- +1.7.9.5 + diff --git a/meta/recipes-connectivity/ppp/ppp-2.4.5/0001-ppp-Fix-compilation-errors-in-Makefile.patch b/meta/recipes-connectivity/ppp/ppp-2.4.5/0001-ppp-Fix-compilation-errors-in-Makefile.patch new file mode 100644 index 00000000000..8aa2d2e678a --- /dev/null +++ b/meta/recipes-connectivity/ppp/ppp-2.4.5/0001-ppp-Fix-compilation-errors-in-Makefile.patch @@ -0,0 +1,75 @@ +From ba0f6058d1f25b2b60fc31ab2656bf12a71ffdab Mon Sep 17 00:00:00 2001 +From: Lu Chong +Date: Tue, 5 Nov 2013 17:32:56 +0800 +Subject: [PATCH] ppp: Fix compilation errors in Makefile + +This patch fixes below issues: + +1. Make can't exit while compilation error occurs in subdir for plugins building. + +2. If build ppp with newer kernel (3.10.10), it will pick 'if_pppox.h' from sysroot-dir and + 'if_pppol2tp.h' from its own source dir, this cause below build errors: + + bitbake_build/tmp/sysroots/intel-x86-64/usr/include/linux/if_pppox.h:84:26: + error: field 'pppol2tp' has incomplete type + struct pppol2tpin6_addr pppol2tp; + ^ + bitbake_build/tmp/sysroots/intel-x86-64/usr/include/linux/if_pppox.h:99:28: + error: field 'pppol2tp' has incomplete type + struct pppol2tpv3in6_addr pppol2tp; + ^ + +The 'sysroot-dir/if_pppox.h' enabled ipv6 support but the 'source-dir/if_pppol2tp.h' lost +related structure definitions, we should use both header files from sysroots to fix this +build failure. + +Upstream-Status: Pending + +Signed-off-by: Lu Chong +--- + pppd/plugins/Makefile.linux | 2 +- + pppd/plugins/pppol2tp/Makefile.linux | 2 +- + pppd/plugins/rp-pppoe/Makefile.linux | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/pppd/plugins/Makefile.linux b/pppd/plugins/Makefile.linux +index 0a7ec7b..2a2c15a 100644 +--- a/pppd/plugins/Makefile.linux ++++ b/pppd/plugins/Makefile.linux +@@ -20,7 +20,7 @@ include .depend + endif + + all: $(PLUGINS) +- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done ++ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all || exit 1; done + + %.so: %.c + $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^ +diff --git a/pppd/plugins/pppol2tp/Makefile.linux b/pppd/plugins/pppol2tp/Makefile.linux +index 19eff67..feb2f52 100644 +--- a/pppd/plugins/pppol2tp/Makefile.linux ++++ b/pppd/plugins/pppol2tp/Makefile.linux +@@ -1,6 +1,6 @@ + #CC = gcc + COPTS = -O2 -g +-CFLAGS = $(COPTS) -I. -I../.. -I../../../include -fPIC ++CFLAGS = $(COPTS) -I. -I../.. -fPIC + LDFLAGS = -shared + INSTALL = install + +diff --git a/pppd/plugins/rp-pppoe/Makefile.linux b/pppd/plugins/rp-pppoe/Makefile.linux +index f078991..15b9118 100644 +--- a/pppd/plugins/rp-pppoe/Makefile.linux ++++ b/pppd/plugins/rp-pppoe/Makefile.linux +@@ -26,7 +26,7 @@ INSTALL = install + RP_VERSION=3.8p + + COPTS=-O2 -g +-CFLAGS=$(COPTS) -I../../../include '-DRP_VERSION="$(RP_VERSION)"' ++CFLAGS=$(COPTS) '-DRP_VERSION="$(RP_VERSION)"' + all: rp-pppoe.so pppoe-discovery + + pppoe-discovery: pppoe-discovery.o debug.o +-- +1.7.9.5 + diff --git a/meta/recipes-connectivity/ppp/ppp_2.4.5.bb b/meta/recipes-connectivity/ppp/ppp_2.4.5.bb index 39354efb178..e951068181c 100644 --- a/meta/recipes-connectivity/ppp/ppp_2.4.5.bb +++ b/meta/recipes-connectivity/ppp/ppp_2.4.5.bb @@ -29,7 +29,10 @@ SRC_URI = "http://ppp.samba.org/ftp/ppp/ppp-${PV}.tar.gz \ file://copts.patch \ file://pap \ file://ppp_on_boot \ - file://provider " + file://provider \ + file://0001-ppp-Add-two-structures-in-if_pppol2tp.h.patch \ + file://0001-ppp-Fix-compilation-errors-in-Makefile.patch \ +" SRC_URI[md5sum] = "4621bc56167b6953ec4071043fe0ec57" SRC_URI[sha256sum] = "43317afec9299f9920b96f840414c977f0385410202d48e56d2fdb8230003505" diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig-gnutls b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig-gnutls index 8be41074cd8..92573e2f991 100644 --- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig-gnutls +++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig-gnutls @@ -347,7 +347,7 @@ CONFIG_PEERKEY=y # Add support for new DBus control interface # (fi.w1.hostap.wpa_supplicant1) -#CONFIG_CTRL_IFACE_DBUS_NEW=y +CONFIG_CTRL_IFACE_DBUS_NEW=y # Add introspection support for new DBus control interface #CONFIG_CTRL_IFACE_DBUS_INTRO=y diff --git a/meta/recipes-core/busybox/busybox-1.21.1/busybox-sed-fix-sed-clusternewline-testcase.patch b/meta/recipes-core/busybox/busybox-1.21.1/busybox-sed-fix-sed-clusternewline-testcase.patch new file mode 100644 index 00000000000..1894037422d --- /dev/null +++ b/meta/recipes-core/busybox/busybox-1.21.1/busybox-sed-fix-sed-clusternewline-testcase.patch @@ -0,0 +1,262 @@ +From 6394bcf17925715db042cfb24f5886b1bed1dfc9 Mon Sep 17 00:00:00 2001 +From: Jackie Huang +Date: Thu, 31 Oct 2013 14:36:31 +0800 +Subject: [PATCH] sed: fix "sed clusternewline" and "autoinsert newline" testcase + +Upstream-Status: Backport [busybox.net] + +Signed-off-by: Jackie Huang +--- + editors/sed.c | 135 ++++++++++++++++++++++++++-------------------------- + testsuite/sed.tests | 4 -- + 2 files changed, 68 insertions(+), 71 deletions(-) + +diff --git a/editors/sed.c b/editors/sed.c +index f8ca5d3..98478b4 100644 +--- a/editors/sed.c ++++ b/editors/sed.c +@@ -845,37 +845,79 @@ static void append(char *s) + llist_add_to_end(&G.append_head, xstrdup(s)); + } + +-static void flush_append(void) ++/* Output line of text. */ ++/* Note: ++ * The tricks with NO_EOL_CHAR and last_puts_char are there to emulate gnu sed. ++ * Without them, we had this: ++ * echo -n thingy >z1 ++ * echo -n again >z2 ++ * >znull ++ * sed "s/i/z/" z1 z2 znull | hexdump -vC ++ * output: ++ * gnu sed 4.1.5: ++ * 00000000 74 68 7a 6e 67 79 0a 61 67 61 7a 6e |thzngy.agazn| ++ * bbox: ++ * 00000000 74 68 7a 6e 67 79 61 67 61 7a 6e |thzngyagazn| ++ */ ++enum { ++ NO_EOL_CHAR = 1, ++ LAST_IS_NUL = 2, ++}; ++static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char last_gets_char) ++{ ++ char lpc = *last_puts_char; ++ ++ /* Need to insert a '\n' between two files because first file's ++ * last line wasn't terminated? */ ++ if (lpc != '\n' && lpc != '\0') { ++ fputc('\n', file); ++ lpc = '\n'; ++ } ++ fputs(s, file); ++ ++ /* 'x' - just something which is not '\n', '\0' or NO_EOL_CHAR */ ++ if (s[0]) ++ lpc = 'x'; ++ ++ /* had trailing '\0' and it was last char of file? */ ++ if (last_gets_char == LAST_IS_NUL) { ++ fputc('\0', file); ++ lpc = 'x'; /* */ ++ } else ++ /* had trailing '\n' or '\0'? */ ++ if (last_gets_char != NO_EOL_CHAR) { ++ fputc(last_gets_char, file); ++ lpc = last_gets_char; ++ } ++ ++ if (ferror(file)) { ++ xfunc_error_retval = 4; /* It's what gnu sed exits with... */ ++ bb_error_msg_and_die(bb_msg_write_error); ++ } ++ *last_puts_char = lpc; ++} ++ ++static void flush_append(char *last_puts_char, char last_gets_char) + { + char *data; + + /* Output appended lines. */ + while ((data = (char *)llist_pop(&G.append_head))) { +- fprintf(G.nonstdout, "%s\n", data); ++ puts_maybe_newline(data, G.nonstdout, last_puts_char, last_gets_char); + free(data); + } + } + +-static void add_input_file(FILE *file) +-{ +- G.input_file_list = xrealloc_vector(G.input_file_list, 2, G.input_file_count); +- G.input_file_list[G.input_file_count++] = file; +-} +- + /* Get next line of input from G.input_file_list, flushing append buffer and + * noting if we ran out of files without a newline on the last line we read. + */ +-enum { +- NO_EOL_CHAR = 1, +- LAST_IS_NUL = 2, +-}; +-static char *get_next_line(char *gets_char) ++static char *get_next_line(char *gets_char, char *last_puts_char, char last_gets_char) + { + char *temp = NULL; + int len; + char gc; + +- flush_append(); ++ flush_append(last_puts_char, last_gets_char); + + /* will be returned if last line in the file + * doesn't end with either '\n' or '\0' */ +@@ -919,54 +961,6 @@ static char *get_next_line(char *gets_char) + return temp; + } + +-/* Output line of text. */ +-/* Note: +- * The tricks with NO_EOL_CHAR and last_puts_char are there to emulate gnu sed. +- * Without them, we had this: +- * echo -n thingy >z1 +- * echo -n again >z2 +- * >znull +- * sed "s/i/z/" z1 z2 znull | hexdump -vC +- * output: +- * gnu sed 4.1.5: +- * 00000000 74 68 7a 6e 67 79 0a 61 67 61 7a 6e |thzngy.agazn| +- * bbox: +- * 00000000 74 68 7a 6e 67 79 61 67 61 7a 6e |thzngyagazn| +- */ +-static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char last_gets_char) +-{ +- char lpc = *last_puts_char; +- +- /* Need to insert a '\n' between two files because first file's +- * last line wasn't terminated? */ +- if (lpc != '\n' && lpc != '\0') { +- fputc('\n', file); +- lpc = '\n'; +- } +- fputs(s, file); +- +- /* 'x' - just something which is not '\n', '\0' or NO_EOL_CHAR */ +- if (s[0]) +- lpc = 'x'; +- +- /* had trailing '\0' and it was last char of file? */ +- if (last_gets_char == LAST_IS_NUL) { +- fputc('\0', file); +- lpc = 'x'; /* */ +- } else +- /* had trailing '\n' or '\0'? */ +- if (last_gets_char != NO_EOL_CHAR) { +- fputc(last_gets_char, file); +- lpc = last_gets_char; +- } +- +- if (ferror(file)) { +- xfunc_error_retval = 4; /* It's what gnu sed exits with... */ +- bb_error_msg_and_die(bb_msg_write_error); +- } +- *last_puts_char = lpc; +-} +- + #define sed_puts(s, n) (puts_maybe_newline(s, G.nonstdout, &last_puts_char, n)) + + static int beg_match(sed_cmd_t *sed_cmd, const char *pattern_space) +@@ -989,7 +983,7 @@ static void process_files(void) + int substituted; + + /* Prime the pump */ +- next_line = get_next_line(&next_gets_char); ++ next_line = get_next_line(&next_gets_char, &last_puts_char, '\n' /*last_gets_char*/); + + /* Go through every line in each file */ + again: +@@ -1003,7 +997,7 @@ static void process_files(void) + + /* Read one line in advance so we can act on the last line, + * the '$' address */ +- next_line = get_next_line(&next_gets_char); ++ next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char); + linenum++; + + /* For every line, go through all the commands */ +@@ -1176,6 +1170,7 @@ static void process_files(void) + /* Append line to linked list to be printed later */ + case 'a': + append(sed_cmd->string); ++ last_gets_char = '\n'; + break; + + /* Insert text before this line */ +@@ -1222,7 +1217,7 @@ static void process_files(void) + free(pattern_space); + pattern_space = next_line; + last_gets_char = next_gets_char; +- next_line = get_next_line(&next_gets_char); ++ next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char); + substituted = 0; + linenum++; + break; +@@ -1258,7 +1253,7 @@ static void process_files(void) + pattern_space[len] = '\n'; + strcpy(pattern_space + len+1, next_line); + last_gets_char = next_gets_char; +- next_line = get_next_line(&next_gets_char); ++ next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char); + linenum++; + break; + } +@@ -1362,7 +1357,7 @@ static void process_files(void) + + /* Delete and such jump here. */ + discard_line: +- flush_append(); ++ flush_append(&last_puts_char, last_gets_char); + free(pattern_space); + + goto again; +@@ -1403,6 +1398,12 @@ static void add_cmd_block(char *cmdstr) + free(sv); + } + ++static void add_input_file(FILE *file) ++{ ++ G.input_file_list = xrealloc_vector(G.input_file_list, 2, G.input_file_count); ++ G.input_file_list[G.input_file_count++] = file; ++} ++ + int sed_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; + int sed_main(int argc UNUSED_PARAM, char **argv) + { +diff --git a/testsuite/sed.tests b/testsuite/sed.tests +index 468565f..e26483c 100755 +--- a/testsuite/sed.tests ++++ b/testsuite/sed.tests +@@ -135,10 +135,8 @@ testing "sed empty file plus cat" "sed -e 's/nohit//' input -" "one\ntwo" \ + "" "one\ntwo" + testing "sed cat plus empty file" "sed -e 's/nohit//' input -" "one\ntwo" \ + "one\ntwo" "" +-test x"$SKIP_KNOWN_BUGS" = x"" && { + testing "sed append autoinserts newline" "sed -e '/woot/a woo' -" \ + "woot\nwoo\n" "" "woot" +-} + testing "sed insert doesn't autoinsert newline" "sed -e '/woot/i woo' -" \ + "woo\nwoot" "" "woot" + testing "sed print autoinsert newlines" "sed -e 'p' -" "one\none" "" "one" +@@ -154,11 +152,9 @@ testing "sed selective matches insert newline" \ + testing "sed selective matches noinsert newline" \ + "sed -ne 's/woo/bang/p' input -" "a bang\nb bang" "a woo\nb woo" \ + "c no\nd no" +-test x"$SKIP_KNOWN_BUGS" = x"" && { + testing "sed clusternewline" \ + "sed -e '/one/a 111' -e '/two/i 222' -e p input -" \ + "one\none\n111\n222\ntwo\ntwo" "one" "two" +-} + testing "sed subst+write" \ + "sed -e 's/i/z/' -e 'woutputw' input -; $ECHO -n X; cat outputw" \ + "thzngy\nagaznXthzngy\nagazn" "thingy" "again" +-- +1.8.3 + diff --git a/meta/recipes-core/busybox/busybox-1.21.1/defconfig b/meta/recipes-core/busybox/busybox-1.21.1/defconfig index 4526121a44e..f0e63c2a1ff 100644 --- a/meta/recipes-core/busybox/busybox-1.21.1/defconfig +++ b/meta/recipes-core/busybox/busybox-1.21.1/defconfig @@ -504,7 +504,7 @@ CONFIG_LSMOD=y # CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set CONFIG_MODPROBE=y # CONFIG_FEATURE_MODPROBE_BLACKLIST is not set -# CONFIG_DEPMOD is not set +CONFIG_DEPMOD=y # # Options common to multiple modutils diff --git a/meta/recipes-core/busybox/busybox_1.21.1.bb b/meta/recipes-core/busybox/busybox_1.21.1.bb index 5c0527397e2..a36cd00a3b7 100644 --- a/meta/recipes-core/busybox/busybox_1.21.1.bb +++ b/meta/recipes-core/busybox/busybox_1.21.1.bb @@ -33,7 +33,9 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://inetd.conf \ file://inetd \ file://login-utilities.cfg \ - file://busybox-list-suid-and-non-suid-app-configs.patch" + file://busybox-list-suid-and-non-suid-app-configs.patch \ + file://busybox-sed-fix-sed-clusternewline-testcase.patch \ +" SRC_URI[tarball.md5sum] = "795394f83903b5eec6567d51eebb417e" SRC_URI[tarball.sha256sum] = "cd5be0912ec856110ae12c76c3ec9cd5cba1df45b5a9da2b095b8284d1481303" diff --git a/meta/recipes-core/dbus/dbus-1.6.10/dbus-1.init b/meta/recipes-core/dbus/dbus-1.6.10/dbus-1.init index 04025e65f89..42c86297c3d 100644 --- a/meta/recipes-core/dbus/dbus-1.6.10/dbus-1.init +++ b/meta/recipes-core/dbus/dbus-1.6.10/dbus-1.init @@ -14,7 +14,7 @@ # Debian init.d script for D-BUS # Copyright Ā© 2003 Colin Walters -set -e +# set -e # Source function library. . /etc/init.d/functions diff --git a/meta/recipes-core/eglibc/eglibc-2.17/make-4.patch b/meta/recipes-core/eglibc/eglibc-2.17/make-4.patch new file mode 100644 index 00000000000..8349c18dc2c --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-2.17/make-4.patch @@ -0,0 +1,31 @@ +Accept make versions 4.0 and greater + +Backport of glibc 28d708c44bc47b56f6551ff285f78edcf61c208a. + +Upstream-Status: Backport +Signed-off-by: Jonathan Liu + +diff -Nur libc.orig/configure libc/configure +--- libc.orig/configure 2012-12-03 08:11:45.000000000 +1100 ++++ libc/configure 2013-11-04 17:15:31.344984184 +1100 +@@ -4995,7 +4995,7 @@ + ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 3.79* | 3.[89]*) ++ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +diff -Nur libc.orig/configure.in libc/configure.in +--- libc.orig/configure.in 2012-12-03 08:11:45.000000000 +1100 ++++ libc/configure.in 2013-11-04 17:15:31.351650849 +1100 +@@ -958,7 +958,7 @@ + critic_missing="$critic_missing gcc") + AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, + [GNU Make[^0-9]*\([0-9][0-9.]*\)], +- [3.79* | 3.[89]*], critic_missing="$critic_missing make") ++ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make") + + AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version, + [GNU gettext.* \([0-9]*\.[0-9.]*\)], diff --git a/meta/recipes-core/eglibc/eglibc-2.18/make-4.patch b/meta/recipes-core/eglibc/eglibc-2.18/make-4.patch new file mode 100644 index 00000000000..ec105b4ae2f --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-2.18/make-4.patch @@ -0,0 +1,31 @@ +Accept make versions 4.0 and greater + +Backport of glibc 28d708c44bc47b56f6551ff285f78edcf61c208a. + +Upstream-Status: Backport +Signed-off-by: Jonathan Liu + +diff -Nur libc.orig/configure libc/configure +--- libc.orig/configure 2013-08-21 02:23:48.000000000 +1000 ++++ libc/configure 2013-11-04 17:04:17.778333748 +1100 +@@ -4772,7 +4772,7 @@ + ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 3.79* | 3.[89]*) ++ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +diff -Nur libc.orig/configure.in libc/configure.in +--- libc.orig/configure.in 2013-08-21 02:23:48.000000000 +1000 ++++ libc/configure.in 2013-11-04 16:54:17.955014870 +1100 +@@ -989,7 +989,7 @@ + critic_missing="$critic_missing gcc") + AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, + [GNU Make[^0-9]*\([0-9][0-9.]*\)], +- [3.79* | 3.[89]*], critic_missing="$critic_missing make") ++ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make") + + AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version, + [GNU gettext.* \([0-9]*\.[0-9.]*\)], diff --git a/meta/recipes-core/eglibc/eglibc_2.17.bb b/meta/recipes-core/eglibc/eglibc_2.17.bb index 22129e6bc3d..c62ff36ee86 100644 --- a/meta/recipes-core/eglibc/eglibc_2.17.bb +++ b/meta/recipes-core/eglibc/eglibc_2.17.bb @@ -28,6 +28,7 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr22 file://tzselect-awk.patch \ file://0001-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \ file://fix-tibetian-locales.patch \ + file://make-4.patch \ ${BACKPORTS} \ " BACKPORTS = "\ diff --git a/meta/recipes-core/eglibc/eglibc_2.18.bb b/meta/recipes-core/eglibc/eglibc_2.18.bb index 710b498a4d0..15e5eed3ff9 100644 --- a/meta/recipes-core/eglibc/eglibc_2.18.bb +++ b/meta/recipes-core/eglibc/eglibc_2.18.bb @@ -27,6 +27,7 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr23 file://0001-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \ file://fix-tibetian-locales.patch \ file://0001-ARM-Pass-dl_hwcap-to-IFUNC-resolver.patch \ + file://make-4.patch \ " SRC_URI[md5sum] = "b395b021422a027d89884992e91734fc" SRC_URI[sha256sum] = "15f564b45dc5dd65faf0875579e3447961ae61e876933384ae05d19328539ad4" diff --git a/meta/recipes-core/images/build-appliance-image_8.0.bb b/meta/recipes-core/images/build-appliance-image_8.0.bb index 94892f0d5bd..1e039a8c1d7 100644 --- a/meta/recipes-core/images/build-appliance-image_8.0.bb +++ b/meta/recipes-core/images/build-appliance-image_8.0.bb @@ -21,7 +21,7 @@ IMAGE_FSTYPES = "vmdk" inherit core-image -SRCREV ?= "ee9a3c191c64636971c94d8a9870c41d7bac02bf" +SRCREV ?= "785b7e392922453698dd8b21cae5b229a9352031" SRC_URI = "git://git.yoctoproject.org/poky \ file://Yocto_Build_Appliance.vmx \ file://Yocto_Build_Appliance.vmxf \ diff --git a/meta/recipes-core/initrdscripts/files/init-install-efi.sh b/meta/recipes-core/initrdscripts/files/init-install-efi.sh index 9846637316f..ed3221b0a6f 100644 --- a/meta/recipes-core/initrdscripts/files/init-install-efi.sh +++ b/meta/recipes-core/initrdscripts/files/init-install-efi.sh @@ -104,6 +104,7 @@ parted /dev/${device} mklabel gpt echo "Creating boot partition on $bootfs" parted /dev/${device} mkpart primary 0% $boot_size +parted /dev/${device} set 1 boot on echo "Creating rootfs partition on $rootfs" parted /dev/${device} mkpart primary $rootfs_start $rootfs_end @@ -149,23 +150,41 @@ mount $bootfs /ssd EFIDIR="/ssd/EFI/BOOT" mkdir -p $EFIDIR -GRUBCFG="$EFIDIR/grub.cfg" - cp /media/$1/vmlinuz /ssd -# Copy the efi loader and config (booti*.efi and grub.cfg) -cp /media/$1/EFI/BOOT/* $EFIDIR - -# Update grub config for the installed image -# Delete the install entry -sed -i "/menuentry 'install'/,/^}/d" $GRUBCFG -# Delete the initrd lines -sed -i "/initrd /d" $GRUBCFG -# Delete any LABEL= strings -sed -i "s/ LABEL=[^ ]*/ /" $GRUBCFG -# Delete any root= strings -sed -i "s/ root=[^ ]*/ /" $GRUBCFG -# Add the root= and other standard boot options -sed -i "s@linux /vmlinuz *@linux /vmlinuz root=$rootfs rw $rootwait quiet @" $GRUBCFG +# Copy the efi loader +cp /media/$1/EFI/BOOT/*.efi $EFIDIR + +if [ -f /media/$1/EFI/BOOT/grub.cfg ]; then + GRUBCFG="$EFIDIR/grub.cfg" + cp /media/$1/EFI/BOOT/grub.cfg $GRUBCFG + # Update grub config for the installed image + # Delete the install entry + sed -i "/menuentry 'install'/,/^}/d" $GRUBCFG + # Delete the initrd lines + sed -i "/initrd /d" $GRUBCFG + # Delete any LABEL= strings + sed -i "s/ LABEL=[^ ]*/ /" $GRUBCFG + # Delete any root= strings + sed -i "s/ root=[^ ]*/ /" $GRUBCFG + # Add the root= and other standard boot options + sed -i "s@linux /vmlinuz *@linux /vmlinuz root=$rootfs rw $rootwait quiet @" $GRUBCFG +fi + +if [ -d /media/$1/loader ]; then + GUMMIBOOT_CFGS="/ssd/loader/entries/*.conf" + # copy config files for gummiboot + cp -dr /media/$1/loader /ssd + # delete the install entry + rm -f /ssd/loader/entries/install.conf + # delete the initrd lines + sed -i "/initrd /d" $GUMMIBOOT_CFGS + # delete any LABEL= strings + sed -i "s/ LABEL=[^ ]*/ /" $GUMMIBOOT_CFGS + # delete any root= strings + sed -i "s/ root=[^ ]*/ /" $GUMMIBOOT_CFGS + # add the root= and other standard boot options + sed -i "s@options *@options root=$rootfs rw $rootwait quiet @" $GUMMIBOOT_CFGS +fi umount /ssd sync diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/init b/meta/recipes-core/initrdscripts/initramfs-framework/init index 20774aa5e9b..95fa9fb1a03 100755 --- a/meta/recipes-core/initrdscripts/initramfs-framework/init +++ b/meta/recipes-core/initrdscripts/initramfs-framework/init @@ -103,7 +103,7 @@ mkdir $ROOTFS_DIR # Load and run modules for m in $MODULES_DIR/*; do # Skip backup files - if [ "`echo $m | sed -e 's/\~$//'`" = "$m" ]; then + if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then continue fi diff --git a/meta/recipes-core/initscripts/initscripts_1.0.bb b/meta/recipes-core/initscripts/initscripts_1.0.bb index 5b5085fc006..50ebb1cf97b 100644 --- a/meta/recipes-core/initscripts/initscripts_1.0.bb +++ b/meta/recipes-core/initscripts/initscripts_1.0.bb @@ -114,7 +114,7 @@ do_install () { update-rc.d -r ${D} halt start 90 0 . update-rc.d -r ${D} save-rtc.sh start 25 0 6 . update-rc.d -r ${D} banner.sh start 02 S . - update-rc.d -r ${D} checkroot.sh start 10 S . + update-rc.d -r ${D} checkroot.sh start 06 S . update-rc.d -r ${D} mountall.sh start 35 S . update-rc.d -r ${D} hostname.sh start 39 S . update-rc.d -r ${D} mountnfs.sh start 45 S . @@ -126,5 +126,7 @@ do_install () { if [ "${TARGET_ARCH}" = "arm" ]; then update-rc.d -r ${D} alignment.sh start 06 S . fi - + # We wish to have /var/log ready at this stage so execute this after + # populate-volatile.sh + update-rc.d -r ${D} dmesg.sh start 38 S . } diff --git a/meta/recipes-core/meta/buildtools-tarball.bb b/meta/recipes-core/meta/buildtools-tarball.bb index 54fba11f8d8..9dabbd0b4db 100644 --- a/meta/recipes-core/meta/buildtools-tarball.bb +++ b/meta/recipes-core/meta/buildtools-tarball.bb @@ -39,6 +39,7 @@ TOOLCHAIN_HOST_TASK ?= "\ nativesdk-chrpath \ nativesdk-tar \ nativesdk-git \ + nativesdk-pigz \ nativesdk-make \ " diff --git a/meta/recipes-core/ncurses/ncurses.inc b/meta/recipes-core/ncurses/ncurses.inc index 671daf89ec9..01cdf132dac 100644 --- a/meta/recipes-core/ncurses/ncurses.inc +++ b/meta/recipes-core/ncurses/ncurses.inc @@ -174,7 +174,7 @@ shell_do_install() { # include some basic terminfo files # stolen ;) from gentoo and modified a bit - for x in ansi console dumb linux rxvt screen sun vt{52,100,102,200,220} xterm-color xterm-xfree86 xterm-256color + for x in ansi console dumb linux rxvt screen sun vt52 vt100 vt102 vt200 vt220 xterm-color xterm-xfree86 xterm-256color do local termfile="$(find "${D}${datadir}/terminfo/" -name "${x}" 2>/dev/null)" local basedir="$(basename $(dirname "${termfile}"))" diff --git a/meta/recipes-core/packagegroups/packagegroup-base.bb b/meta/recipes-core/packagegroups/packagegroup-base.bb index 1c0c7571c20..eee8bd9794f 100644 --- a/meta/recipes-core/packagegroups/packagegroup-base.bb +++ b/meta/recipes-core/packagegroups/packagegroup-base.bb @@ -353,6 +353,7 @@ RRECOMMENDS_packagegroup-base-nfs = "\ SUMMARY_packagegroup-base-zeroconf = "Zeroconf support" RDEPENDS_packagegroup-base-zeroconf = "\ + libnss-mdns \ avahi-daemon" SUMMARY_packagegroup-base-ipv6 = "IPv6 support" diff --git a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb index 61c99bc40e9..108e67890ac 100644 --- a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb +++ b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb @@ -26,6 +26,10 @@ RDEPENDS_packagegroup-self-hosted = "\ packagegroup-self-hosted-host-tools \ " +# midori depends on webkit-gtk which could not build for mips64 +MIDORI = "midori" +MIDORI_mips64 = "" + RDEPENDS_packagegroup-self-hosted-host-tools = "\ connman \ connman-plugin-ethernet \ @@ -45,7 +49,7 @@ RDEPENDS_packagegroup-self-hosted-host-tools = "\ mc-helpers-perl \ mc-helpers-python \ leafpad \ - midori \ + ${MIDORI} \ pcmanfm \ parted \ pseudo \ diff --git a/meta/recipes-core/systemd/systemd-compat-units.bb b/meta/recipes-core/systemd/systemd-compat-units.bb index c47c14bf957..6eb5ffd985f 100644 --- a/meta/recipes-core/systemd/systemd-compat-units.bb +++ b/meta/recipes-core/systemd/systemd-compat-units.bb @@ -14,6 +14,8 @@ SRC_URI = "file://*.service" do_install() { install -d ${D}${systemd_unitdir}/system/basic.target.wants install -d ${D}${systemd_unitdir}/system/sysinit.target.wants/ + sed -i -e 's,@POSTINSTALL_INITPOSITION@,${POSTINSTALL_INITPOSITION},g' \ + ${WORKDIR}/run-postinsts.service install -m 0644 ${WORKDIR}/run-postinsts.service ${D}${systemd_unitdir}/system ln -sf ../run-postinsts.service ${D}${systemd_unitdir}/system/basic.target.wants/ ln -sf ../run-postinsts.service ${D}${systemd_unitdir}/system/sysinit.target.wants/ @@ -53,4 +55,8 @@ pkg_postinst_${PN} () { FILES_${PN} = "${systemd_unitdir}/system ${bindir}" RDPEPENDS_${PN} = "systemd" - +# Define a variable to allow distros to run configure earlier. +# (for example, to enable loading of ethernet kernel modules before networking starts) +# note: modifying name or default value for POSTINSTALL_INITPOSITION requires +# changes in opkg.inc +POSTINSTALL_INITPOSITION ?= "98" diff --git a/meta/recipes-core/systemd/systemd-compat-units/run-postinsts.service b/meta/recipes-core/systemd/systemd-compat-units/run-postinsts.service index 4ebc2344cfe..35cf3d32de8 100644 --- a/meta/recipes-core/systemd/systemd-compat-units/run-postinsts.service +++ b/meta/recipes-core/systemd/systemd-compat-units/run-postinsts.service @@ -1,12 +1,12 @@ [Unit] Description=Run pending postinsts DefaultDependencies=no -ConditionPathExists=|/etc/rcS.d/S99run-postinsts +ConditionPathExists=|/etc/rcS.d/S@POSTINSTALL_INITPOSITION@run-postinsts After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount Before=sysinit.target [Service] -ExecStart=/etc/rcS.d/S99run-postinsts +ExecStart=/etc/rcS.d/S@POSTINSTALL_INITPOSITION@run-postinsts RemainAfterExit=No Type=oneshot StandardOutput=syslog diff --git a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb index 23c284d131c..05ba4104413 100644 --- a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb +++ b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb @@ -22,7 +22,7 @@ do_install() { for i in $tmp do j=`echo ${i} | sed s/\;/\ /g` - label=`echo ${i} | sed -e 's/^.*;tty//'` + label=`echo ${i} | sed -e 's/^.*;tty//' -e 's/;.*//'` echo "$label:12345:respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab done diff --git a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init index 7b87827fdf7..b1813572ca0 100755 --- a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init +++ b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init @@ -47,9 +47,9 @@ case "$ACTION" in then umask 027 start-stop-daemon --start --quiet \ - --exec $DAEMON -- -r + --exec $DAEMON -- -r -c else - $DAEMON -r + $DAEMON -r -c fi echo "$NAME." ;; diff --git a/meta/recipes-core/sysvinit/sysvinit/rc b/meta/recipes-core/sysvinit/sysvinit/rc index 655a0b067cb..1f400d9e556 100755 --- a/meta/recipes-core/sysvinit/sysvinit/rc +++ b/meta/recipes-core/sysvinit/sysvinit/rc @@ -174,6 +174,6 @@ startup() { if [ "x$runlevel" != "xS" ] && [ ! -x /etc/rc${runlevel}.d/S??xserver-nodm ]; then if type psplash-write >/dev/null 2>&1; then TMPDIR=/mnt/.psplash psplash-write "QUIT" || true - umount /mnt/.psplash + umount -l /mnt/.psplash fi fi diff --git a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb index 50842e2fb6d..f2d5659e659 100644 --- a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb +++ b/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb @@ -44,6 +44,9 @@ ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff" ALTERNATIVE_${PN}-pidof = "pidof" ALTERNATIVE_LINK_NAME[pidof] = "${base_bindir}/pidof" +ALTERNATIVE_${PN}-sulogin = "sulogin" +ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin" + ALTERNATIVE_${PN}-doc = "mountpoint.1 last.1 mesg.1 wall.1 sulogin.8 utmpdump.1" ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1" @@ -56,7 +59,7 @@ ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1" PACKAGES =+ "sysvinit-pidof sysvinit-sulogin" FILES_${PN} += "${base_sbindir}/* ${base_bindir}/*" FILES_sysvinit-pidof = "${base_bindir}/pidof.sysvinit ${base_sbindir}/killall5" -FILES_sysvinit-sulogin = "${base_sbindir}/sulogin" +FILES_sysvinit-sulogin = "${base_sbindir}/sulogin.sysvinit" RDEPENDS_${PN} += "sysvinit-pidof" diff --git a/meta/recipes-core/udev/udev.inc b/meta/recipes-core/udev/udev.inc index 2ff8f006da9..29162c7f2ca 100644 --- a/meta/recipes-core/udev/udev.inc +++ b/meta/recipes-core/udev/udev.inc @@ -45,8 +45,8 @@ EXTRA_OECONF = "--disable-introspection \ " PACKAGES =+ "udev-utils udev-cache" -PACKAGES =+ "libudev libudev-dev libudev-dbg" -PACKAGES =+ "libgudev libgudev-dev libgudev-dbg" +PACKAGES =+ "libudev" +PACKAGES =+ "libgudev" INITSCRIPT_PACKAGES = "udev udev-cache" INITSCRIPT_NAME_udev = "udev" @@ -61,15 +61,13 @@ FILES_${PN}-dbg += "${libexecdir}/.debug" FILES_${PN}-dbg += "${base_libdir}/udev/.debug/" FILES_${PN}-dbg += "${base_libdir}/udev/.debug/*" FILES_${PN}-dbg += "${nonarch_base_libdir}/udev/.debug/*" -FILES_${PN}-dev = "${datadir}/pkgconfig/udev.pc" +FILES_${PN}-dev = "${datadir}/pkgconfig/udev.pc \ + ${includedir}/libudev.h ${libdir}/libudev.so ${libdir}/libudev.la \ + ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc \ + ${includedir}/gudev* ${libdir}/libgudev*.so ${libdir}/libgudev*.la \ + ${libdir}/libgudev*.a ${libdir}/pkgconfig/gudev*.pc" FILES_libudev = "${base_libdir}/libudev.so.*" -FILES_libudev-dbg = "${base_libdir}/.debug/libudev.so.*" -FILES_libudev-dev = "${includedir}/libudev.h ${libdir}/libudev.so ${libdir}/libudev.la \ - ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc" FILES_libgudev = "${base_libdir}/libgudev*.so.* ${libdir}/libgudev*.so.*" -FILES_libgudev-dbg = "${base_libdir}/.debug/libgudev*.so.* ${libdir}/.debug/libgudev*.so.*" -FILES_libgudev-dev = "${includedir}/gudev* ${libdir}/libgudev*.so ${libdir}/libgudev*.la \ - ${libdir}/libgudev*.a ${libdir}/pkgconfig/gudev*.pc" FILES_udev-cache = "${sysconfdir}/init.d/udev-cache ${sysconfdir}/default/udev-cache" FILES_udev-utils = "${bindir}/udevadm" diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc index 15b677015f1..565dda37127 100644 --- a/meta/recipes-core/util-linux/util-linux.inc +++ b/meta/recipes-core/util-linux/util-linux.inc @@ -201,6 +201,9 @@ ALTERNATIVE_LINK_NAME[mount] = "${base_bindir}/mount" ALTERNATIVE_util-linux-umount = "umount" ALTERNATIVE_LINK_NAME[umount] = "${base_bindir}/umount" +ALTERNATIVE_util-linux-readprofile = "readprofile" +ALTERNATIVE_LINK_NAME[readprofile] = "${base_sbindir}/readprofile" + ALTERNATIVE_util-linux-losetup = "losetup" ALTERNATIVE_LINK_NAME[losetup] = "${base_sbindir}/losetup" diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian.inc b/meta/recipes-devtools/binutils/binutils-cross-canadian.inc index 2da90176613..81349c083ce 100644 --- a/meta/recipes-devtools/binutils/binutils-cross-canadian.inc +++ b/meta/recipes-devtools/binutils/binutils-cross-canadian.inc @@ -22,6 +22,8 @@ do_install () { rm -f ${D}${libdir}/libiberty* rm -f ${D}${libdir}/libopcodes* rm -f ${D}${includedir}/*.h + + cross_canadian_bindirlinks } BBCLASSEXTEND = "" diff --git a/meta/recipes-devtools/binutils/binutils.inc b/meta/recipes-devtools/binutils/binutils.inc index 5e78dc03df8..b8463ab1cc8 100644 --- a/meta/recipes-devtools/binutils/binutils.inc +++ b/meta/recipes-devtools/binutils/binutils.inc @@ -11,7 +11,7 @@ BUGTRACKER = "http://sourceware.org/bugzilla/" SECTION = "devel" LICENSE = "GPLv3" -DEPENDS = "flex-native bison-native zlib-native" +DEPENDS = "flex-native bison-native zlib-native gnu-config-native" inherit autotools gettext multilib_header diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs-1.42.8/populate-extfs.sh b/meta/recipes-devtools/e2fsprogs/e2fsprogs-1.42.8/populate-extfs.sh index 9eff0308202..7de720b115a 100644 --- a/meta/recipes-devtools/e2fsprogs/e2fsprogs-1.42.8/populate-extfs.sh +++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs-1.42.8/populate-extfs.sh @@ -35,7 +35,7 @@ DEBUGFS="debugfs" fi # Only stat once since stat is a time consuming command - STAT=$(stat -c "TYPE=\"%F\";DEVNO=\"0x%t 0x%T\";MODE=\"%f\";U=\"%u\";G=\"%g\"" $FILE) + STAT=$(stat -c "TYPE=\"%F\";DEVNO=\"0x%t 0x%T\";MODE=\"%f\";U=\"%u\";G=\"%g\"" "$FILE") eval $STAT case $TYPE in @@ -43,20 +43,20 @@ DEBUGFS="debugfs" echo "mkdir $TGT" ;; "regular file" | "regular empty file") - echo "write $FILE $TGT" + echo "write \"$FILE\" \"$TGT\"" ;; "symbolic link") - LINK_TGT=$(readlink $FILE) - echo "symlink $TGT $LINK_TGT" + LINK_TGT=$(readlink "$FILE") + echo "symlink \"$TGT\" \"$LINK_TGT\"" ;; "block special file") - echo "mknod $TGT b $DEVNO" + echo "mknod \"$TGT\" b $DEVNO" ;; "character special file") - echo "mknod $TGT c $DEVNO" + echo "mknod \"$TGT\" c $DEVNO" ;; "fifo") - echo "mknod $TGT p" + echo "mknod \"$TGT\" p" ;; *) echo "Unknown/unhandled file type '$TYPE' file: $FILE" 1>&2 @@ -64,11 +64,11 @@ DEBUGFS="debugfs" esac # Set the file mode - echo "sif $TGT mode 0x$MODE" + echo "sif \"$TGT\" mode 0x$MODE" # Set uid and gid - echo "sif $TGT uid $U" - echo "sif $TGT gid $G" + echo "sif \"$TGT\" uid $U" + echo "sif \"$TGT\" gid $G" done # Handle the hard links. diff --git a/meta/recipes-devtools/flex/flex.inc b/meta/recipes-devtools/flex/flex.inc index 43f1dda01c6..96d5de5f74c 100644 --- a/meta/recipes-devtools/flex/flex.inc +++ b/meta/recipes-devtools/flex/flex.inc @@ -13,6 +13,9 @@ inherit autotools gettext M4 = "${bindir}/m4" M4_class-native = "${STAGING_BINDIR_NATIVE}/m4" +EXTRA_OECONF += "ac_cv_path_M4=${M4}" +EXTRA_OEMAKE += "m4=${STAGING_BINDIR_NATIVE}/m4" + do_install_append_class-native() { create_wrapper ${D}/${bindir}/flex M4=${M4} } @@ -20,3 +23,5 @@ do_install_append_class-native() { do_install_append_class-nativesdk() { create_wrapper ${D}/${bindir}/flex M4=${M4} } + +RDEPENDS_${PN} += "m4" diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc index 64bb6ba7229..900f1e594fd 100644 --- a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc +++ b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc @@ -29,6 +29,7 @@ export AS_FOR_TARGET = "${TARGET_PREFIX}as" export DLLTOOL_FOR_TARGET = "${TARGET_PREFIX}dlltool" export CC_FOR_TARGET = "${TARGET_PREFIX}gcc" export CXX_FOR_TARGET = "${TARGET_PREFIX}g++" +export GCC_FOR_TARGET = "${TARGET_PREFIX}gcc" export LD_FOR_TARGET = "${TARGET_PREFIX}ld" export LIPO_FOR_TARGET = "${TARGET_PREFIX}lipo" export NM_FOR_TARGET = "${TARGET_PREFIX}nm" @@ -69,7 +70,7 @@ EXCLUDE_FROM_SHLIBS = "1" PACKAGES = "${PN} ${PN}-doc" FILES_${PN} = "\ - ${bindir}/* \ + ${exec_prefix}/bin/* \ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/* \ ${gcclibdir}/${TARGET_SYS}/${BINV}/*.o \ ${gcclibdir}/${TARGET_SYS}/${BINV}/specs \ @@ -137,6 +138,8 @@ do_install () { done chown -R root:root ${D} + + cross_canadian_bindirlinks } ELFUTILS = "nativesdk-elfutils" diff --git a/meta/recipes-devtools/gdb/gdb-7.6.inc b/meta/recipes-devtools/gdb/gdb-7.6.inc index 00cb6eea48b..9be94b8b288 100644 --- a/meta/recipes-devtools/gdb/gdb-7.6.inc +++ b/meta/recipes-devtools/gdb/gdb-7.6.inc @@ -4,6 +4,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \ file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674" +SRC_URI += " file://gdb-fix-cygwin-check-in-configure-script.patch " + S = "${WORKDIR}/${BPN}-${PV}" SRC_URI[md5sum] = "a9836707337e5f7bf76a009a8904f470" diff --git a/meta/recipes-devtools/gdb/gdb-cross-canadian.inc b/meta/recipes-devtools/gdb/gdb-cross-canadian.inc index 3cb347b4c5a..653f52baaf0 100644 --- a/meta/recipes-devtools/gdb/gdb-cross-canadian.inc +++ b/meta/recipes-devtools/gdb/gdb-cross-canadian.inc @@ -31,5 +31,6 @@ EOF # right bits installed by binutils. do_install_append() { rm -rf ${D}${exec_prefix}/lib + cross_canadian_bindirlinks } diff --git a/meta/recipes-devtools/gdb/gdb/gdb-fix-cygwin-check-in-configure-script.patch b/meta/recipes-devtools/gdb/gdb/gdb-fix-cygwin-check-in-configure-script.patch new file mode 100644 index 00000000000..4e4647b0d92 --- /dev/null +++ b/meta/recipes-devtools/gdb/gdb/gdb-fix-cygwin-check-in-configure-script.patch @@ -0,0 +1,38 @@ +Avoid false positives if the search pattern "lose" is found in path +descriptions in comments generated by the preprocessor. + +See . +--- + gdb/configure | 2 +- + gdb/configure.ac | 2 +- + 3 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/gdb/configure b/gdb/configure +index 5514b2f..b38e183 100755 +--- a/gdb/configure ++++ b/gdb/configure +@@ -12446,7 +12446,7 @@ lose + #endif + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "lose" >/dev/null 2>&1; then : ++ $EGREP "^lose$" >/dev/null 2>&1; then : + gdb_cv_os_cygwin=yes + else + gdb_cv_os_cygwin=no +diff --git a/gdb/configure.ac b/gdb/configure.ac +index 9b73887..2947293 100644 +--- a/gdb/configure.ac ++++ b/gdb/configure.ac +@@ -1877,7 +1877,7 @@ AC_SUBST(WERROR_CFLAGS) + + # In the Cygwin environment, we need some additional flags. + AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin, +-[AC_EGREP_CPP(lose, [ ++[AC_EGREP_CPP(^lose$, [ + #if defined (__CYGWIN__) || defined (__CYGWIN32__) + lose + #endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])]) +-- +1.8.4 + diff --git a/meta/recipes-devtools/mklibs/mklibs-native_0.1.38.bb b/meta/recipes-devtools/mklibs/mklibs-native_0.1.38.bb index e4240521c92..6367e8f3bb3 100644 --- a/meta/recipes-devtools/mklibs/mklibs-native_0.1.38.bb +++ b/meta/recipes-devtools/mklibs/mklibs-native_0.1.38.bb @@ -3,7 +3,7 @@ HOMEPAGE = "https://code.launchpad.net/mklibs" SECTION = "devel" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://debian/copyright;md5=98d31037b13d896e33890738ef01af64" -DEPENDS = "python-native" +DEPENDS = "python-native dpkg-native" SRC_URI = "http://ftp.de.debian.org/debian/pool/main/m/mklibs/${BPN}_${PV}.tar.gz \ file://ac_init_fix.patch\ diff --git a/meta/recipes-devtools/opkg/opkg.inc b/meta/recipes-devtools/opkg/opkg.inc index 3d568867d4b..78724f359bd 100644 --- a/meta/recipes-devtools/opkg/opkg.inc +++ b/meta/recipes-devtools/opkg/opkg.inc @@ -104,4 +104,6 @@ BBCLASSEXTEND = "native nativesdk" # Define a variable to allow distros to run configure earlier. # (for example, to enable loading of ethernet kernel modules before networking starts) +# note: modifying name or default value for POSTINSTALL_INITPOSITION requires +# changes in systemd-compat-units.bb POSTINSTALL_INITPOSITION ?= "98" diff --git a/meta/recipes-devtools/perl/perl-ptest.inc b/meta/recipes-devtools/perl/perl-ptest.inc index 15afe2dab48..6999e6be37d 100644 --- a/meta/recipes-devtools/perl/perl-ptest.inc +++ b/meta/recipes-devtools/perl/perl-ptest.inc @@ -42,8 +42,9 @@ python populate_packages_prepend() { # Put all *.t files from the lib dir in the ptest package # do_split_packages requires a pair of () in the regex, but we have nothing # to match, so use an empty pair. - do_split_packages(d, d.expand('${libdir}/perl/${PV}'), '.*\.t()', - '${PN}-ptest%s', '%s', recursive=True, match_path=True) + if "ptest" in d.getVar("DISTRO_FEATURES", True).split(): + do_split_packages(d, d.expand('${libdir}/perl/${PV}'), '.*\.t()', + '${PN}-ptest%s', '%s', recursive=True, match_path=True) } RDEPENDS_${PN}-ptest += "${PN}-modules ${PN}-doc ${PN}-misc" diff --git a/meta/recipes-devtools/pseudo/pseudo.inc b/meta/recipes-devtools/pseudo/pseudo.inc index 0471cd6f211..9411c578193 100644 --- a/meta/recipes-devtools/pseudo/pseudo.inc +++ b/meta/recipes-devtools/pseudo/pseudo.inc @@ -13,8 +13,11 @@ SRC_URI_append_class-nativesdk = " file://symver.patch" SRC_URI_append_class-native = " file://symver.patch" -FILES_${PN} = "${libdir}/pseudo/lib*/libpseudo.so ${bindir}/* ${localstatedir}/pseudo ${prefix}/var/pseudo" -FILES_${PN}-dbg += "${libdir}/pseudo/lib*/.debug" +FILES_${PN} = "${prefix}/lib/pseudo/lib*/libpseudo.so ${bindir}/* ${localstatedir}/pseudo ${prefix}/var/pseudo" +FILES_${PN}-dbg += "${prefix}/lib/pseudo/lib*/.debug" +INSANE_SKIP_${PN} += "libdir" +INSANE_SKIP_${PN}-dbg += "libdir" + PROVIDES += "virtual/fakeroot" MAKEOPTS = "" diff --git a/meta/recipes-devtools/python/python-2.7-manifest.inc b/meta/recipes-devtools/python/python-2.7-manifest.inc index 6d3a9e6c041..94a2e02de1f 100644 --- a/meta/recipes-devtools/python/python-2.7-manifest.inc +++ b/meta/recipes-devtools/python/python-2.7-manifest.inc @@ -5,9 +5,9 @@ -PROVIDES+="${PN}-2to3 ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib " +PROVIDES+="${PN}-2to3 ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib " -PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib ${PN}-modules" +PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib ${PN}-modules" DESCRIPTION_${PN}-2to3="Python Automated Python 2 to 3 code translation" RDEPENDS_${PN}-2to3="${PN}-core" @@ -39,8 +39,7 @@ FILES_${PN}-compression="${libdir}/python2.7/gzip.* ${libdir}/python2.7/zipfile. DESCRIPTION_${PN}-core="Python Interpreter and core modules (needed!)" RDEPENDS_${PN}-core="${PN}-lang ${PN}-re" -FILES_${PN}-core="${libdir}/python2.7/__future__.* ${libdir}/python2.7/_abcoll.* ${libdir}/python2.7/abc.* ${libdir}/python2.7/copy.* ${libdir}/python2.7/copy_reg.* ${libdir}/python2.7/ConfigParser.* ${libdir}/python2.7/genericpath.* ${libdir}/python2.7/getopt.* ${libdir}/python2.7/linecache.* ${libdir}/python2.7/new.* ${libdir}/python2.7/os.* ${libdir}/python2.7/posixpath.* ${libdir}/python2.7/struct.* ${libdir}/python2.7/warnings.* ${libdir}/python2.7/site.* ${libdir}/python2.7/stat.* ${libdir}/python2.7/UserDict.* ${libdir}/python2.7/UserList.* ${libdir}/python2.7/UserString.* ${libdir}/python2.7/lib-dynload/binascii.so ${libdir}/python2.7/lib-dynload/_struct.so ${libdir}/python2.7/lib-dynload/time.so ${libdir}/python2.7/lib-dynload/xreadlines.so \ -${libdir}/python2.7/types.* ${libdir}/python2.7/platform.* ${bindir}/python* ${libdir}/python2.7/_weakrefset.* ${libdir}/python2.7/sysconfig.* ${libdir}/python2.7/config/Makefile ${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py " +FILES_${PN}-core="${libdir}/python2.7/__future__.* ${libdir}/python2.7/_abcoll.* ${libdir}/python2.7/abc.* ${libdir}/python2.7/copy.* ${libdir}/python2.7/copy_reg.* ${libdir}/python2.7/ConfigParser.* ${libdir}/python2.7/genericpath.* ${libdir}/python2.7/getopt.* ${libdir}/python2.7/linecache.* ${libdir}/python2.7/new.* ${libdir}/python2.7/os.* ${libdir}/python2.7/posixpath.* ${libdir}/python2.7/struct.* ${libdir}/python2.7/warnings.* ${libdir}/python2.7/site.* ${libdir}/python2.7/stat.* ${libdir}/python2.7/UserDict.* ${libdir}/python2.7/UserList.* ${libdir}/python2.7/UserString.* ${libdir}/python2.7/lib-dynload/binascii.so ${libdir}/python2.7/lib-dynload/_struct.so ${libdir}/python2.7/lib-dynload/time.so ${libdir}/python2.7/lib-dynload/xreadlines.so ${libdir}/python2.7/types.* ${libdir}/python2.7/platform.* ${bindir}/python* ${libdir}/python2.7/_weakrefset.* ${libdir}/python2.7/sysconfig.* ${libdir}/python2.7/config/Makefile ${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py " DESCRIPTION_${PN}-crypt="Python Basic Cryptographic and Hashing Support" RDEPENDS_${PN}-crypt="${PN}-core" @@ -118,6 +117,10 @@ DESCRIPTION_${PN}-image="Python Graphical Image Handling" RDEPENDS_${PN}-image="${PN}-core" FILES_${PN}-image="${libdir}/python2.7/colorsys.* ${libdir}/python2.7/imghdr.* ${libdir}/python2.7/lib-dynload/imageop.so ${libdir}/python2.7/lib-dynload/rgbimg.so " +DESCRIPTION_${PN}-importlib="Python import implementation library" +RDEPENDS_${PN}-importlib="${PN}-core" +FILES_${PN}-importlib="${libdir}/python2.7/importlib " + DESCRIPTION_${PN}-io="Python Low-Level I/O" RDEPENDS_${PN}-io="${PN}-core ${PN}-math ${PN}-textutils" FILES_${PN}-io="${libdir}/python2.7/lib-dynload/_socket.so ${libdir}/python2.7/lib-dynload/_io.so ${libdir}/python2.7/lib-dynload/_ssl.so ${libdir}/python2.7/lib-dynload/select.so ${libdir}/python2.7/lib-dynload/termios.so ${libdir}/python2.7/lib-dynload/cStringIO.so ${libdir}/python2.7/pipes.* ${libdir}/python2.7/socket.* ${libdir}/python2.7/ssl.* ${libdir}/python2.7/tempfile.* ${libdir}/python2.7/StringIO.* ${libdir}/python2.7/io.* ${libdir}/python2.7/_pyio.* " @@ -271,7 +274,7 @@ RDEPENDS_${PN}-zlib="${PN}-core" FILES_${PN}-zlib="${libdir}/python2.7/lib-dynload/zlib.so " DESCRIPTION_${PN}-modules="All Python modules" -RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib " +RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-elementtree ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib " ALLOW_EMPTY_${PN}-modules = "1" diff --git a/meta/recipes-devtools/rpm/rpm/debugedit-valid-file-to-fix-segment-fault.patch b/meta/recipes-devtools/rpm/rpm/debugedit-valid-file-to-fix-segment-fault.patch new file mode 100644 index 00000000000..2696cd3168d --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm/debugedit-valid-file-to-fix-segment-fault.patch @@ -0,0 +1,67 @@ +debugedit: fix segment fault while file's bss offset have a large number + +While ELF_C_RDWR_MMAP was used, elf_begin invoked mmap() to map file +into memory. While the file's bss Offset has a large number, elf_update +caculated file size by __elf64_updatenull_wrlock and the size was +enlarged. + +In this situation, elf_update invoked ftruncate to enlarge the file, +and memory size (elf->maximum_size) also was incorrectly updated. +There was segment fault in elf_end which invoked munmap with the +length is the enlarged file size, not the mmap's length. + +Before the above operations, invoke elf_begin/elf_update/elf_end +with ELF_C_RDWR and ELF_F_LAYOUT set to enlarge the above file, it +could make sure the file is safe for the following elf operations. + +Upstream-Status: Pending +Signed-off-by: Hongxu Jia +--- + tools/debugedit.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/tools/debugedit.c b/tools/debugedit.c +--- a/tools/debugedit.c ++++ b/tools/debugedit.c +@@ -1512,6 +1512,28 @@ handle_build_id (DSO *dso, Elf_Data *build_id, + } + } + ++/* It avoided the segment fault while file's bss offset have a large number. ++ See https://bugzilla.redhat.com/show_bug.cgi?id=1019707 ++ https://bugzilla.redhat.com/show_bug.cgi?id=1020842 for detail. */ ++void valid_file(int fd) ++{ ++ Elf *elf = elf_begin (fd, ELF_C_RDWR, NULL); ++ if (elf == NULL) ++ { ++ error (1, 0, "elf_begin: %s", elf_errmsg (-1)); ++ return; ++ } ++ ++ elf_flagelf (elf, ELF_C_SET, ELF_F_LAYOUT); ++ ++ if (elf_update (elf, ELF_C_WRITE) < 0) ++ error (1, 0, "elf_update: %s", elf_errmsg (-1)); ++ ++ elf_end (elf); ++ ++ return; ++} ++ + int + main (int argc, char *argv[]) + { +@@ -1608,6 +1630,9 @@ main (int argc, char *argv[]) + exit (1); + } + ++ /* Make sure the file is valid. */ ++ valid_file(fd); ++ + dso = fdopen_dso (fd, file); + if (dso == NULL) + exit (1); +-- +1.8.1.2 + diff --git a/meta/recipes-devtools/rpm/rpm_5.4.9.bb b/meta/recipes-devtools/rpm/rpm_5.4.9.bb index 3c7e03b48a6..c2f22799e94 100644 --- a/meta/recipes-devtools/rpm/rpm_5.4.9.bb +++ b/meta/recipes-devtools/rpm/rpm_5.4.9.bb @@ -86,6 +86,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;ex file://rpm-platform2.patch \ file://rpm-remove-sykcparse-decl.patch \ file://debugedit-segv.patch \ + file://debugedit-valid-file-to-fix-segment-fault.patch \ file://rpm-platform-file-fix.patch \ file://rpm-lsb-compatibility.patch \ " diff --git a/meta/recipes-devtools/syslinux/syslinux_6.01.bb b/meta/recipes-devtools/syslinux/syslinux_6.01.bb index 4438ea83306..538be56b939 100644 --- a/meta/recipes-devtools/syslinux/syslinux_6.01.bb +++ b/meta/recipes-devtools/syslinux/syslinux_6.01.bb @@ -44,7 +44,7 @@ do_compile() { } do_install() { - oe_runmake install INSTALLROOT="${D}" firmware="bios" + oe_runmake CC="${CC} ${CFLAGS}" install INSTALLROOT="${D}" firmware="bios" install -d ${D}${datadir}/syslinux/ install -m 644 ${S}/bios/core/ldlinux.sys ${D}${datadir}/syslinux/ diff --git a/meta/recipes-devtools/zisofs-tools/zisofs-tools-native_1.0.8.bb b/meta/recipes-devtools/zisofs-tools/zisofs-tools-native_1.0.8.bb index 1501307cdb2..02accf655ba 100644 --- a/meta/recipes-devtools/zisofs-tools/zisofs-tools-native_1.0.8.bb +++ b/meta/recipes-devtools/zisofs-tools/zisofs-tools-native_1.0.8.bb @@ -7,6 +7,8 @@ SECTION = "console/utils" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +DEPENDS = "zlib-native" + SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/zisofs-tools/zisofs-tools-${PV}.tar.bz2/2d0ed8c9a1f60b45f949b136f9be1f6c/zisofs-tools-${PV}.tar.bz2" SRC_URI[md5sum] = "2d0ed8c9a1f60b45f949b136f9be1f6c" diff --git a/meta/recipes-extended/cracklib/cracklib_2.9.0.bb b/meta/recipes-extended/cracklib/cracklib_2.9.0.bb index 34c2ff1c4c2..bbf88bba185 100644 --- a/meta/recipes-extended/cracklib/cracklib_2.9.0.bb +++ b/meta/recipes-extended/cracklib/cracklib_2.9.0.bb @@ -5,7 +5,7 @@ LICENSE = "LGPLv2.1+" LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06" DEPENDS = "cracklib-native zlib" -DEPENDS_class-native = "zlib" +DEPENDS_class-native = "zlib-native" EXTRA_OECONF = "--without-python --libdir=${base_libdir}" diff --git a/meta/recipes-extended/cronie/cronie/crond.init b/meta/recipes-extended/cronie/cronie/crond.init index 08f34beed95..c8dffef89a3 100755 --- a/meta/recipes-extended/cronie/cronie/crond.init +++ b/meta/recipes-extended/cronie/cronie/crond.init @@ -23,10 +23,6 @@ CONFIG=/etc/sysconfig/crond case "$1" in start) - if [ $UID -ne 0 ] ; then - echo "User has insufficient privilege." - exit 1 - fi echo -n "Starting crond: " start-stop-daemon --start --quiet --exec $CROND -- $CRONDARGS RETVAL=$? @@ -37,10 +33,6 @@ case "$1" in fi ;; stop) - if [ $UID -ne 0 ] ; then - echo "User has insufficient privilege." - exit 1 - fi echo -n "Stopping crond: " start-stop-daemon --stop --quiet --pidfile /var/run/crond.pid RETVAL=$? diff --git a/meta/recipes-extended/ethtool/ethtool_3.10.bb b/meta/recipes-extended/ethtool/ethtool_3.10.bb index 83587d90be3..d23c285cffe 100644 --- a/meta/recipes-extended/ethtool/ethtool_3.10.bb +++ b/meta/recipes-extended/ethtool/ethtool_3.10.bb @@ -16,7 +16,7 @@ inherit autotools ptest RDEPENDS_${PN}-ptest += "make" do_compile_ptest() { - oe_runmake buildtest-TESTS + oe_runmake test-cmdline test-features } do_install_ptest () { diff --git a/meta/recipes-extended/images/core-image-basic.bb b/meta/recipes-extended/images/core-image-basic.bb index 091f57db744..d599e720f11 100644 --- a/meta/recipes-extended/images/core-image-basic.bb +++ b/meta/recipes-extended/images/core-image-basic.bb @@ -6,6 +6,7 @@ IMAGE_FEATURES += "splash ssh-server-openssh" IMAGE_INSTALL = "\ packagegroup-core-boot \ packagegroup-core-basic \ + ${CORE_IMAGE_EXTRA_INSTALL} \ " inherit core-image diff --git a/meta/recipes-extended/mdadm/mdadm_3.2.6.bb b/meta/recipes-extended/mdadm/mdadm_3.2.6.bb index 7b6a6c7fe70..382c0c128a7 100644 --- a/meta/recipes-extended/mdadm/mdadm_3.2.6.bb +++ b/meta/recipes-extended/mdadm/mdadm_3.2.6.bb @@ -26,6 +26,13 @@ do_configure_prepend () { sed -i -e '/.*ansidecl.h.*/d' ${S}/sha1.h } +EXTRA_OEMAKE = "CHECK_RUN_DIR=0" +# PPC64 uses long long for u64 in the kernel, but powerpc's asm/types.h +# prevents 64-bit userland from seeing this definition, instead defaulting +# to u64 == long in userspace. Define __SANE_USERSPACE_TYPES__ to get +# int-ll64.h included +EXTRA_OEMAKE_append_powerpc64 = ' CFLAGS=-D__SANE_USERSPACE_TYPES__' + do_compile() { oe_runmake } diff --git a/meta/recipes-extended/pigz/pigz_2.3.bb b/meta/recipes-extended/pigz/pigz_2.3.bb index 724d00bcf7f..bf8dd9533f0 100644 --- a/meta/recipes-extended/pigz/pigz_2.3.bb +++ b/meta/recipes-extended/pigz/pigz_2.3.bb @@ -6,5 +6,5 @@ SRC_URI[sha256sum] = "74bbd5962f9420549fc987ddd1ccda692ec2b29d2d612fbbe26edf3fa3 NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}" -BBCLASSEXTEND = "native" +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/cairo/cairo.inc b/meta/recipes-graphics/cairo/cairo.inc index 06d2dee821b..214999772a5 100644 --- a/meta/recipes-graphics/cairo/cairo.inc +++ b/meta/recipes-graphics/cairo/cairo.inc @@ -11,7 +11,7 @@ BUGTRACKER = "http://bugs.freedesktop.org" SECTION = "libs" LICENSE = "MPL-1 & LGPLv2.1" X11DEPENDS = "virtual/libx11 libsm libxrender libxext" -DEPENDS = "libpng fontconfig pixman glib-2.0" +DEPENDS = "libpng fontconfig pixman glib-2.0 zlib" PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ ${@base_contains('DISTRO_FEATURES', 'directfb', 'directfb', '', d)}" PACKAGECONFIG[x11] = "--with-x=yes,--without-x,${X11DEPENDS}" diff --git a/meta/recipes-graphics/cogl/cogl-1.0.inc b/meta/recipes-graphics/cogl/cogl-1.0.inc index 59ff66e1fae..0c4e86da33a 100644 --- a/meta/recipes-graphics/cogl/cogl-1.0.inc +++ b/meta/recipes-graphics/cogl/cogl-1.0.inc @@ -21,7 +21,7 @@ EDEPENDS_GLES2 = "virtual/libgles2" EDEPENDS_KMS = "libdrm virtual/egl" EDEPENDS_EGL = "virtual/egl" EDEPENDS_X11 = "virtual/libx11 libxcomposite libxfixes libxi libxrandr" -EDEPENDS_WAYLAND = "wayland" +EDEPENDS_WAYLAND = "virtual/mesa wayland" # Extra RDEPENDS for PACKAGECONFIG # This has to be explictly listed, because cogl dlopens the backends diff --git a/meta/recipes-graphics/pango/pango.inc b/meta/recipes-graphics/pango/pango.inc index ea360c7cd6f..17006d386cd 100644 --- a/meta/recipes-graphics/pango/pango.inc +++ b/meta/recipes-graphics/pango/pango.inc @@ -13,7 +13,7 @@ X11DEPENDS = "virtual/libx11 libxft" DEPENDS = "glib-2.0 fontconfig freetype zlib virtual/libiconv cairo harfbuzz" PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" -PACKAGECONFIG[x11] = "--with-x,--without-x,${X11DEPENDS}" +PACKAGECONFIG[x11] = "--with-xft,--without-xft,${X11DEPENDS}" BBCLASSEXTEND = "native" DEPENDS_class-native = "glib-2.0-native cairo-native harfbuzz-native" @@ -34,8 +34,7 @@ EXTRA_AUTORECONF = "" # seems to go wrong with default cflags FULL_OPTIMIZATION_arm = "-O2" -EXTRA_OECONF = "--disable-glibtest \ - --disable-introspection \ +EXTRA_OECONF = "--disable-introspection \ --enable-explicit-deps=no \ --disable-debug \ --with-mlprefix=${MLPREFIX}" diff --git a/meta/recipes-graphics/wayland/weston-init.bb b/meta/recipes-graphics/wayland/weston-init.bb index a3fe811f4d3..4ebda8b2977 100644 --- a/meta/recipes-graphics/wayland/weston-init.bb +++ b/meta/recipes-graphics/wayland/weston-init.bb @@ -13,5 +13,7 @@ do_install() { inherit allarch update-rc.d +RDEPENDS_${PN} = "weston kbd" + INITSCRIPT_NAME = "weston" INITSCRIPT_PARAMS = "start 9 5 2 . stop 20 0 1 6 ." diff --git a/meta/recipes-graphics/wayland/weston-init/init b/meta/recipes-graphics/wayland/weston-init/init index daa7f2300f0..284fd0ac3ce 100644 --- a/meta/recipes-graphics/wayland/weston-init/init +++ b/meta/recipes-graphics/wayland/weston-init/init @@ -34,7 +34,7 @@ case "$1" in chmod 0700 $XDG_RUNTIME_DIR fi - weston + openvt -s weston ;; stop) diff --git a/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc b/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc index c911925505b..98e14162850 100644 --- a/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc +++ b/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc @@ -13,8 +13,9 @@ S = "${WORKDIR}/${XORG_PN}-${PV}" inherit autotools pkgconfig -EXTRA_OECONF = "--enable-malloc0returnsnull \ - --disable-specs --with-groff=no --with-ps2pdf=no --with-fop=no --without-xmlto" +EXTRA_OECONF = "--disable-specs --without-groff --without-ps2pdf --without-fop --without-xmlto" +EXTRA_OECONF_append_libc-glibc = " --disable-malloc0returnsnull" +EXTRA_OECONF_append_libc-uclibc = " --enable-malloc0returnsnull" python () { whitelist = [ "pixman", "libpciaccess" ] diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.4.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.4.bb deleted file mode 100644 index de44cf0c74a..00000000000 --- a/meta/recipes-kernel/kexec/kexec-tools_2.0.4.bb +++ /dev/null @@ -1,11 +0,0 @@ -require kexec-tools.inc -export LDFLAGS = "-L${STAGING_LIBDIR}" -EXTRA_OECONF = " --with-zlib=yes" - -SRC_URI[md5sum] = "b9f2a3ba0ba9c78625ee7a50532500d8" -SRC_URI[sha256sum] = "6ba1872c58434b8e92506ff515c7ef64555671af54097bae51b833bda3f5126c" - -PACKAGES =+ "kexec kdump" - -FILES_kexec = "${sbindir}/kexec" -FILES_kdump = "${sbindir}/kdump" diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.7.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.7.bb new file mode 100644 index 00000000000..0ac5e5f98c7 --- /dev/null +++ b/meta/recipes-kernel/kexec/kexec-tools_2.0.7.bb @@ -0,0 +1,12 @@ +require kexec-tools.inc +export LDFLAGS = "-L${STAGING_LIBDIR}" +EXTRA_OECONF = " --with-zlib=yes" + +SRC_URI[md5sum] = "2309ba43981cb6d39d07ac3a9aac30ab" +SRC_URI[sha256sum] = "dde5c38be39882c6c91f0129647349c4e1943b077d3020af1970b481ee954eb0" + +PACKAGES =+ "kexec kdump vmcore-dmesg" + +FILES_kexec = "${sbindir}/kexec" +FILES_kdump = "${sbindir}/kdump" +FILES_vmcore-dmesg = "${sbindir}/vmcore-dmesg" diff --git a/meta/recipes-kernel/kmod/kmod-native_git.bb b/meta/recipes-kernel/kmod/kmod-native_git.bb index f22efc0615d..d008cbf7c4a 100644 --- a/meta/recipes-kernel/kmod/kmod-native_git.bb +++ b/meta/recipes-kernel/kmod/kmod-native_git.bb @@ -6,6 +6,7 @@ inherit native SRC_URI += "file://fix-undefined-O_CLOEXEC.patch \ file://0001-Fix-build-with-older-gcc-4.6.patch \ + file://Change-to-calling-bswap_-instead-of-htobe-and-be-toh.patch \ " do_install_append (){ diff --git a/meta/recipes-kernel/kmod/kmod.inc b/meta/recipes-kernel/kmod/kmod.inc index 633258b05e3..880a53aa075 100644 --- a/meta/recipes-kernel/kmod/kmod.inc +++ b/meta/recipes-kernel/kmod/kmod.inc @@ -20,6 +20,7 @@ SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \ file://run-ptest \ file://ptest.patch \ file://remove_parallel_tests.patch \ + file://fix-seperatebuilddir.patch \ " SRCREV = "3b38c7fcb58be4ddc34f90454c5f5dc3693d2d85" diff --git a/meta/recipes-kernel/kmod/kmod/Change-to-calling-bswap_-instead-of-htobe-and-be-toh.patch b/meta/recipes-kernel/kmod/kmod/Change-to-calling-bswap_-instead-of-htobe-and-be-toh.patch new file mode 100644 index 00000000000..82b83b36b72 --- /dev/null +++ b/meta/recipes-kernel/kmod/kmod/Change-to-calling-bswap_-instead-of-htobe-and-be-toh.patch @@ -0,0 +1,39 @@ +From 0c4dbadc9db3cda1cfca64e44ea08c6e89919ea7 Mon Sep 17 00:00:00 2001 +From: Ting Liu +Date: Tue, 10 Sep 2013 13:44:18 +0800 +Subject: [PATCH] Change to calling bswap_* instead of htobe* and be*toh + +We can't use htobe* and be*toh functions because they are not +available on older versions of glibc, For example, shipped on Centos 5.5. + +Change to directly calling bswap_* as defined in+byteswap.h. + +Signed-off-by: Ting Liu +--- + libkmod/libkmod-signature.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c +index 6b80caa..3544a36 100644 +--- a/libkmod/libkmod-signature.c ++++ b/libkmod/libkmod-signature.c +@@ -19,6 +19,7 @@ + */ + + #include ++#include + #include + #include + #include +@@ -121,7 +122,7 @@ bool kmod_module_signature_info(const struct kmod_file *file, struct kmod_signat + modsig->hash >= PKEY_HASH__LAST || + modsig->id_type >= PKEY_ID_TYPE__LAST) + return false; +- sig_len = be32toh(modsig->sig_len); ++ sig_len = bswap_32(modsig->sig_len); + if (size < (off_t)(modsig->signer_len + modsig->key_id_len + sig_len)) + return false; + +-- +1.7.5.4 + diff --git a/meta/recipes-kernel/kmod/kmod/fix-seperatebuilddir.patch b/meta/recipes-kernel/kmod/kmod/fix-seperatebuilddir.patch new file mode 100644 index 00000000000..b090eb56a5b --- /dev/null +++ b/meta/recipes-kernel/kmod/kmod/fix-seperatebuilddir.patch @@ -0,0 +1,34 @@ + +If we are not building in the existing source tree, the testsuite +directory will not exist so the cp of the stamp-rootfs would fail. + +Also added buildtest-TESTS so they could be build in the cross env, +without running the tests. + +Upstream-Status: Accepted + +Signed-off-by: Saul Wold + +Index: git/Makefile.am +=================================================================== +--- git.orig/Makefile.am ++++ git/Makefile.am +@@ -131,7 +131,7 @@ endif + + ROOTFS = testsuite/rootfs + ROOTFS_PRISTINE = $(top_srcdir)/testsuite/rootfs-pristine +-CREATE_ROOTFS = $(AM_V_GEN) ( $(RM) -rf $(ROOTFS) && \ ++CREATE_ROOTFS = $(AM_V_GEN) ( $(RM) -rf $(ROOTFS) && mkdir -p $(dir $(ROOTFS)) && \ + cp -r $(ROOTFS_PRISTINE) $(ROOTFS) && \ + touch testsuite/stamp-rootfs && \ + find $(ROOTFS) -type d -exec chmod +w {} \; ) +@@ -217,6 +217,9 @@ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-d + + distclean-local: $(DISTCLEAN_LOCAL_HOOKS) + ++buildtest-TESTS: ++ $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) ++ + install-ptest: + @$(MKDIR_P) $(DESTDIR)/testsuite + @for file in $(TESTSUITE); do \ diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_3.10.bb b/meta/recipes-kernel/linux/linux-yocto-rt_3.10.bb index 1a8599544dc..c8b9888f487 100644 --- a/meta/recipes-kernel/linux/linux-yocto-rt_3.10.bb +++ b/meta/recipes-kernel/linux/linux-yocto-rt_3.10.bb @@ -3,13 +3,13 @@ require recipes-kernel/linux/linux-yocto.inc KBRANCH = "standard/preempt-rt/base" KBRANCH_qemuppc = "standard/preempt-rt/qemuppc" -SRCREV_machine ?= "f1e003e9441f0366d7b9a2209ef3108438745ea3" -SRCREV_machine_qemuppc ?= "12be459359d5b20dbf856aa3649304c6f618d420" -SRCREV_meta ?= "452f0679ea93a6cb4433bebd7177629228a5cf68" +SRCREV_machine ?= "baed5453f830d06075a4480ec0ded8ff785828bc" +SRCREV_machine_qemuppc ?= "26a465af89793c7dc5a81661449c5a9f0ad06dee" +SRCREV_meta ?= "6ad20f049abd52b515a8e0a4664861cfd331f684" SRC_URI = "git://git.yoctoproject.org/linux-yocto-3.10.git;bareclone=1;branch=${KBRANCH},meta;name=machine,meta" -LINUX_VERSION ?= "3.10.11" +LINUX_VERSION ?= "3.10.17" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb b/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb index 97069486ea4..4d59b1611e9 100644 --- a/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb +++ b/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb @@ -10,7 +10,7 @@ KMETA = "meta" SRCREV_machine ?= "4fb187301ca153d496b2a96293dffde34d3b1a56" SRCREV_machine_qemuppc ?= "547c4ea570933ab7ece9f10d2c46875b460cd337" -SRCREV_meta ?= "cb96851e7e559f9247d616d08406db6135c357cb" +SRCREV_meta ?= "19e686b473ebf018c56c9eb839f5fbd88ecd9a5a" PR = "${INC_PR}.1" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_3.10.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_3.10.bb index 1405e4115f8..6bd8ae68e22 100644 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_3.10.bb +++ b/meta/recipes-kernel/linux/linux-yocto-tiny_3.10.bb @@ -5,13 +5,12 @@ KBRANCH = "${KBRANCH_DEFAULT}" LINUX_KERNEL_TYPE = "tiny" KCONFIG_MODE = "--allnoconfig" -LINUX_VERSION ?= "3.10.11" +LINUX_VERSION ?= "3.10.17" KMETA = "meta" -SRCREV_machine ?= "e1aa804148370cda6f85640281af156ffa007d52" -SRCREV_meta ?= "452f0679ea93a6cb4433bebd7177629228a5cf68" - +SRCREV_machine ?= "c03195ed6e3066494e3fb4be69154a57066e845b" +SRCREV_meta ?= "6ad20f049abd52b515a8e0a4664861cfd331f684" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_3.8.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_3.8.bb index 41b9f9fdea4..4f346912a4b 100644 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_3.8.bb +++ b/meta/recipes-kernel/linux/linux-yocto-tiny_3.8.bb @@ -13,7 +13,7 @@ LINUX_VERSION ?= "3.8.13" KMETA = "meta" SRCREV_machine ?= "f20047520a57322f05d95a18a5fbd082fb15cb87" -SRCREV_meta ?= "cb96851e7e559f9247d616d08406db6135c357cb" +SRCREV_meta ?= "19e686b473ebf018c56c9eb839f5fbd88ecd9a5a" PR = "${INC_PR}.1" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/meta/recipes-kernel/linux/linux-yocto_3.10.bb b/meta/recipes-kernel/linux/linux-yocto_3.10.bb index fa37e8a054b..1f1a9dc99ee 100644 --- a/meta/recipes-kernel/linux/linux-yocto_3.10.bb +++ b/meta/recipes-kernel/linux/linux-yocto_3.10.bb @@ -3,18 +3,18 @@ require recipes-kernel/linux/linux-yocto.inc KBRANCH_DEFAULT = "standard/base" KBRANCH = "${KBRANCH_DEFAULT}" -SRCREV_machine_qemuarm ?= "aa1fa3cec7bd6e47f29acc5b5fbffddc16569883" -SRCREV_machine_qemumips ?= "5b908fd12f60de1e51e932c5df477a49b0ab2b40" -SRCREV_machine_qemuppc ?= "e80029ac30022c554e916ed438435ecc03cc2cea" -SRCREV_machine_qemux86 ?= "e1aa804148370cda6f85640281af156ffa007d52" -SRCREV_machine_qemux86-64 ?= "e1aa804148370cda6f85640281af156ffa007d52" -SRCREV_machine_qemumips64 ?= "6973844d304411893420a7e57545edc4dc854bd7" -SRCREV_machine ?= "e1aa804148370cda6f85640281af156ffa007d52" -SRCREV_meta ?= "452f0679ea93a6cb4433bebd7177629228a5cf68" +SRCREV_machine_qemuarm ?= "5714b747cf0087bb964cbb962db8d3d2041f3177" +SRCREV_machine_qemumips ?= "e87d2cb44bc5d10f3619871541849064bf0d79b1" +SRCREV_machine_qemuppc ?= "3e99f981fea427696f63af7fd8e99bf05039efee" +SRCREV_machine_qemux86 ?= "c03195ed6e3066494e3fb4be69154a57066e845b" +SRCREV_machine_qemux86-64 ?= "c03195ed6e3066494e3fb4be69154a57066e845b" +SRCREV_machine_qemumips64 ?= "8d21f71847640fc052bda1bf1f3792634cae5bb1" +SRCREV_machine ?= "c03195ed6e3066494e3fb4be69154a57066e845b" +SRCREV_meta ?= "6ad20f049abd52b515a8e0a4664861cfd331f684" SRC_URI = "git://git.yoctoproject.org/linux-yocto-3.10.git;bareclone=1;branch=${KBRANCH},${KMETA};name=machine,meta" -LINUX_VERSION ?= "3.10.11" +LINUX_VERSION ?= "3.10.17" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/meta/recipes-kernel/linux/linux-yocto_3.8.bb b/meta/recipes-kernel/linux/linux-yocto_3.8.bb index 6f344801058..20fce1b9815 100644 --- a/meta/recipes-kernel/linux/linux-yocto_3.8.bb +++ b/meta/recipes-kernel/linux/linux-yocto_3.8.bb @@ -10,7 +10,7 @@ SRCREV_machine_qemuppc ?= "698eada61d9385b42dd117858b943655b565084b" SRCREV_machine_qemux86 ?= "f20047520a57322f05d95a18a5fbd082fb15cb87" SRCREV_machine_qemux86-64 ?= "f20047520a57322f05d95a18a5fbd082fb15cb87" SRCREV_machine ?= "f20047520a57322f05d95a18a5fbd082fb15cb87" -SRCREV_meta ?= "cb96851e7e559f9247d616d08406db6135c357cb" +SRCREV_meta ?= "19e686b473ebf018c56c9eb839f5fbd88ecd9a5a" SRC_URI = "git://git.yoctoproject.org/linux-yocto-3.8.git;bareclone=1;branch=${KBRANCH},${KMETA};name=machine,meta" diff --git a/meta/recipes-kernel/lttng/lttng-modules_git.bb b/meta/recipes-kernel/lttng/lttng-modules_2.3.3.bb similarity index 93% rename from meta/recipes-kernel/lttng/lttng-modules_git.bb rename to meta/recipes-kernel/lttng/lttng-modules_2.3.3.bb index 789b5ec94f0..f293376e1ee 100644 --- a/meta/recipes-kernel/lttng/lttng-modules_git.bb +++ b/meta/recipes-kernel/lttng/lttng-modules_2.3.3.bb @@ -10,8 +10,8 @@ DEPENDS = "virtual/kernel" inherit module -SRCREV = "78c8710bb8e6b7f6301d95afec0305f40fa063ad" -PV = "2.3.0+git${SRCPV}" +SRCREV = "eef112db0e63feff6cbf0a98cda9af607cefb377" +PV = "2.3.3" SRC_URI = "git://git.lttng.org/lttng-modules.git \ file://lttng-modules-replace-KERNELDIR-with-KERNEL_SRC.patch" diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index 269069f3af2..903ffa6eaff 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -89,6 +89,13 @@ EXTRA_OEMAKE += "\ 'infodir=${@oe.path.relative(prefix, infodir)}' \ " +# PPC64 uses long long for u64 in the kernel, but powerpc's asm/types.h +# prevents 64-bit userland from seeing this definition, instead defaulting +# to u64 == long in userspace. Define __SANE_USERSPACE_TYPES__ to get +# int-ll64.h included. And MIPS64 has the same issue. +EXTRA_OEMAKE_append_powerpc64 = ' CFLAGS=-D__SANE_USERSPACE_TYPES__' +EXTRA_OEMAKE_append_mips64 = ' CFLAGS=-D__SANE_USERSPACE_TYPES__' + PARALLEL_MAKE = "" do_compile() { diff --git a/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-3674.patch b/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-3674.patch new file mode 100644 index 00000000000..a28404b072e --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-3674.patch @@ -0,0 +1,26 @@ +avcodec/cdgraphics: check buffer size before use + +Fixes out of array accesses + +Backported from:http://git.videolan.org/?p=ffmpeg.git;a=commit;h=ad002e1a13a8df934bd6cb2c84175a4780ab8942 + +Upstream-status: Backport + +Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind +Signed-off-by: Michael Niedermayer +Signed-off-by: Ming Liu + +diff -urpN a/gst-libs/ext/libav/libavcodec/cdgraphics.c b/gst-libs/ext/libav/libavcodec/cdgraphics.c +--- a/gst-libs/ext/libav/libavcodec/cdgraphics.c 2013-07-18 13:17:08.399876575 +0800 ++++ b/gst-libs/ext/libav/libavcodec/cdgraphics.c 2013-07-18 13:18:05.880502267 +0800 +@@ -291,7 +291,9 @@ static int cdg_decode_frame(AVCodecConte + inst = bytestream_get_byte(&buf); + inst &= CDG_MASK; + buf += 2; /// skipping 2 unneeded bytes +- bytestream_get_buffer(&buf, cdg_data, buf_size - CDG_HEADER_SIZE); ++ ++ if (buf_size > CDG_HEADER_SIZE) ++ bytestream_get_buffer(&buf, cdg_data, buf_size - CDG_HEADER_SIZE); + + if ((command & CDG_MASK) == CDG_COMMAND) { + switch (inst) { diff --git a/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb b/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb index 88731050491..e1257a2697e 100644 --- a/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb +++ b/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb @@ -22,12 +22,13 @@ SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2 \ file://h264_qpel_mmx.patch \ file://libav_e500mc.patch \ file://libav_e5500.patch \ + file://gst-ffmpeg-CVE-2013-3674.patch \ " SRC_URI[md5sum] = "7f5beacaf1312db2db30a026b36888c4" SRC_URI[sha256sum] = "76fca05b08e00134e3cb92fa347507f42cbd48ddb08ed3343a912def187fbb62" -PR = "r7" +PR = "r8" GSTREAMER_DEBUG ?= "--disable-debug" diff --git a/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-1960.patch b/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-1960.patch new file mode 100644 index 00000000000..e4348f1d2cf --- /dev/null +++ b/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-1960.patch @@ -0,0 +1,151 @@ +This patch comes from: http://pkgs.fedoraproject.org/cgit/libtiff.git/plain/libtiff-CVE-2013-1960.patch + +Upstream-Status: Pending + +Signed-off-by: Ming Liu + +diff -Naur a/tools/tiff2pdf.c b/tools/tiff2pdf.c +--- a/tools/tiff2pdf.c 2012-07-25 22:56:43.000000000 -0400 ++++ b/tools/tiff2pdf.c 2013-05-02 12:04:49.057090227 -0400 +@@ -3341,33 +3341,56 @@ + uint32 height){ + + tsize_t i=0; +- uint16 ri =0; +- uint16 v_samp=1; +- uint16 h_samp=1; +- int j=0; +- +- i++; +- +- while(i<(*striplength)){ ++ ++ while (i < *striplength) { ++ tsize_t datalen; ++ uint16 ri; ++ uint16 v_samp; ++ uint16 h_samp; ++ int j; ++ int ncomp; ++ ++ /* marker header: one or more FFs */ ++ if (strip[i] != 0xff) ++ return(0); ++ i++; ++ while (i < *striplength && strip[i] == 0xff) ++ i++; ++ if (i >= *striplength) ++ return(0); ++ /* SOI is the only pre-SOS marker without a length word */ ++ if (strip[i] == 0xd8) ++ datalen = 0; ++ else { ++ if ((*striplength - i) <= 2) ++ return(0); ++ datalen = (strip[i+1] << 8) | strip[i+2]; ++ if (datalen < 2 || datalen >= (*striplength - i)) ++ return(0); ++ } + switch( strip[i] ){ +- case 0xd8: +- /* SOI - start of image */ ++ case 0xd8: /* SOI - start of image */ + _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), 2); + *bufferoffset+=2; +- i+=2; + break; +- case 0xc0: +- case 0xc1: +- case 0xc3: +- case 0xc9: +- case 0xca: ++ case 0xc0: /* SOF0 */ ++ case 0xc1: /* SOF1 */ ++ case 0xc3: /* SOF3 */ ++ case 0xc9: /* SOF9 */ ++ case 0xca: /* SOF10 */ + if(no==0){ +- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2); +- for(j=0;j>4) > h_samp) +- h_samp = (buffer[*bufferoffset+11+(2*j)]>>4); +- if( (buffer[*bufferoffset+11+(2*j)] & 0x0f) > v_samp) +- v_samp = (buffer[*bufferoffset+11+(2*j)] & 0x0f); ++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2); ++ ncomp = buffer[*bufferoffset+9]; ++ if (ncomp < 1 || ncomp > 4) ++ return(0); ++ v_samp=1; ++ h_samp=1; ++ for(j=0;j>4) > h_samp) ++ h_samp = (samp>>4); ++ if( (samp & 0x0f) > v_samp) ++ v_samp = (samp & 0x0f); + } + v_samp*=8; + h_samp*=8; +@@ -3381,45 +3404,43 @@ + (unsigned char) ((height>>8) & 0xff); + buffer[*bufferoffset+6]= + (unsigned char) (height & 0xff); +- *bufferoffset+=strip[i+2]+2; +- i+=strip[i+2]+2; +- ++ *bufferoffset+=datalen+2; ++ /* insert a DRI marker */ + buffer[(*bufferoffset)++]=0xff; + buffer[(*bufferoffset)++]=0xdd; + buffer[(*bufferoffset)++]=0x00; + buffer[(*bufferoffset)++]=0x04; + buffer[(*bufferoffset)++]=(ri >> 8) & 0xff; + buffer[(*bufferoffset)++]= ri & 0xff; +- } else { +- i+=strip[i+2]+2; + } + break; +- case 0xc4: +- case 0xdb: +- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2); +- *bufferoffset+=strip[i+2]+2; +- i+=strip[i+2]+2; ++ case 0xc4: /* DHT */ ++ case 0xdb: /* DQT */ ++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2); ++ *bufferoffset+=datalen+2; + break; +- case 0xda: ++ case 0xda: /* SOS */ + if(no==0){ +- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2); +- *bufferoffset+=strip[i+2]+2; +- i+=strip[i+2]+2; ++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2); ++ *bufferoffset+=datalen+2; + } else { + buffer[(*bufferoffset)++]=0xff; + buffer[(*bufferoffset)++]= + (unsigned char)(0xd0 | ((no-1)%8)); +- i+=strip[i+2]+2; + } +- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), (*striplength)-i-1); +- *bufferoffset+=(*striplength)-i-1; ++ i += datalen + 1; ++ /* copy remainder of strip */ ++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i]), *striplength - i); ++ *bufferoffset+= *striplength - i; + return(1); + default: +- i+=strip[i+2]+2; ++ /* ignore any other marker */ ++ break; + } ++ i += datalen + 1; + } +- + ++ /* failed to find SOS marker */ + return(0); + } + #endif diff --git a/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-4232.patch b/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-4232.patch new file mode 100644 index 00000000000..9ebf8f9a2de --- /dev/null +++ b/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-4232.patch @@ -0,0 +1,15 @@ +This patch comes from: http://bugzilla.maptools.org/attachment.cgi?id=513&action=diff + +Upstream-Status: Pending + +Signed-off-by: Baogen shang +--- a/tools/tiff2pdf.c 2013-10-21 10:36:38.214170346 +0800 ++++ b/tools/tiff2pdf.c 2013-10-21 10:38:58.246170329 +0800 +@@ -2387,6 +2387,7 @@ + TIFFFileName(input)); + t2p->t2p_error = T2P_ERR_ERROR; + _TIFFfree(buffer); ++ return(0); + } else { + buffer=samplebuffer; + t2p->tiff_datasize *= t2p->tiff_samplesperpixel; diff --git a/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-4243.patch b/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-4243.patch new file mode 100644 index 00000000000..642a1179768 --- /dev/null +++ b/meta/recipes-multimedia/libtiff/files/libtiff-CVE-2013-4243.patch @@ -0,0 +1,40 @@ +This patch comes from: http://bugzilla.maptools.org/attachment.cgi?id=518&action=diff#tools/gif2tiff.c_sec2 + +Upstream-Status: Pending + +Signed-off-by: Baogen shang +--- a/tools/gif2tiff.c 2013-10-14 17:08:43.966239709 +0800 ++++ b/tools/gif2tiff.c 2013-10-14 17:18:22.994239638 +0800 +@@ -280,6 +280,10 @@ + fprintf(stderr, "no colormap present for image\n"); + return (0); + } ++ if (width == 0 || height == 0) { ++ fprintf(stderr, "Invalid value of width or height\n"); ++ return(0); ++ } + if ((raster = (unsigned char*) _TIFFmalloc(width*height+EXTRAFUDGE)) == NULL) { + fprintf(stderr, "not enough memory for image\n"); + return (0); +@@ -397,6 +401,10 @@ + return 1; + } + ++ if (*fill >= raster + width*height) { ++ fprintf(stderr, "raster full before eoi code\n"); ++ return 0; ++ } + if (oldcode == -1) { + *(*fill)++ = suffix[code]; + firstchar = oldcode = code; +@@ -428,6 +436,10 @@ + } + oldcode = incode; + do { ++ if (*fill >= raster + width*height) { ++ fprintf(stderr, "raster full before eoi code\n"); ++ return 0; ++ } + *(*fill)++ = *--stackp; + } while (stackp > stack); + return 1; diff --git a/meta/recipes-multimedia/libtiff/tiff_4.0.3.bb b/meta/recipes-multimedia/libtiff/tiff_4.0.3.bb index 256e75eca87..4a639205ec8 100644 --- a/meta/recipes-multimedia/libtiff/tiff_4.0.3.bb +++ b/meta/recipes-multimedia/libtiff/tiff_4.0.3.bb @@ -6,7 +6,10 @@ DEPENDS = "zlib jpeg xz" PR = "r0" SRC_URI = "ftp://ftp.remotesensing.org/pub/libtiff/tiff-${PV}.tar.gz \ - file://libtool2.patch" + file://libtool2.patch \ + file://libtiff-CVE-2013-1960.patch \ + file://libtiff-CVE-2013-4232.patch \ + file://libtiff-CVE-2013-4243.patch" SRC_URI[md5sum] = "051c1068e6a0627f461948c365290410" SRC_URI[sha256sum] = "ea1aebe282319537fb2d4d7805f478dd4e0e05c33d0928baba76a7c963684872" diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc index 4c10aa9782a..bb13f4b52ee 100644 --- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc +++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc @@ -43,7 +43,8 @@ PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxtst libice l PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" -EXTRA_OECONF_append_arm += "${@bb.utils.contains("TUNE_FEATURES", "neon", "", "--enable-neon-opt=no", d)}" +EXTRA_OECONF_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}" +EXTRA_OECONF_append_armeb = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}" export TARGET_PFPU = "${TARGET_FPU}" diff --git a/meta/recipes-qt/meta/meta-toolchain-qt.inc b/meta/recipes-qt/meta/meta-toolchain-qt.inc index 14591a839b8..c9bdeae9ac3 100644 --- a/meta/recipes-qt/meta/meta-toolchain-qt.inc +++ b/meta/recipes-qt/meta/meta-toolchain-qt.inc @@ -24,6 +24,7 @@ toolchain_create_sdk_env_script_append() { echo 'export OE_QMAKE_QDBUSXML2CPP=${QT_TOOLS_PREFIX}/qdbusxml2cpp4' >> $script echo 'export OE_QMAKE_QT_CONFIG=${SDKTARGETSYSROOT}/${datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script echo 'export QMAKESPEC=${SDKTARGETSYSROOT}/${datadir}/${QT_DIR_NAME}/mkspecs/linux-g++' >> $script + echo 'export QT_CONF_PATH=${SDKPATHNATIVE}/${sysconfdir}/qt.conf' >> $script # make a symbolic link to mkspecs for compatibility with Nokia's SDK # and QTCreator diff --git a/meta/recipes-qt/qt4/nativesdk-qt4-tools.inc b/meta/recipes-qt/qt4/nativesdk-qt4-tools.inc index a9ec61e08fd..2c806e0043a 100644 --- a/meta/recipes-qt/qt4/nativesdk-qt4-tools.inc +++ b/meta/recipes-qt/qt4/nativesdk-qt4-tools.inc @@ -118,4 +118,10 @@ do_install() { for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do \ ln -s ${i}4 ${i}; \ done) + + install -d ${D}${sysconfdir} + cat >${D}${sysconfdir}/qt.conf < +Upstream-Status: Backport + +diff -Nurp boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp +--- boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp 2013-08-23 19:51:52.706329968 +0200 +@@ -0,0 +1,14 @@ ++// Copyright (c) 2013, Petr Machata, Red Hat Inc. ++// ++// Use modification and distribution are subject to the boost Software ++// License, Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). ++ ++#include "../../../boost/atomic.hpp" ++#include "../../../boost/static_assert.hpp" ++ ++int ++main(int argc, char *argv[]) ++{ ++ BOOST_STATIC_ASSERT(BOOST_ATOMIC_FLAG_LOCK_FREE); ++ return 0; ++} +diff -Nurp boost_1_54_0/libs/thread/build/Jamfile.v2 boost_1_54_0.pm/libs/thread/build/Jamfile.v2 +--- boost_1_54_0/libs/thread/build/Jamfile.v2 2013-06-15 12:35:45.000000000 +0200 ++++ boost_1_54_0.pm/libs/thread/build/Jamfile.v2 2013-08-23 19:52:30.018613408 +0200 +@@ -36,6 +36,7 @@ import os ; + import feature ; + import indirect ; + import path ; ++import configure ; + + project boost/thread + : source-location ../src +@@ -140,6 +141,8 @@ local rule default_threadapi ( ) + feature.feature threadapi : pthread win32 : propagated ; + feature.set-default threadapi : [ default_threadapi ] ; + ++exe has_atomic_flag_lockfree : ../build/has_atomic_flag_lockfree_test.cpp ; ++ + rule tag ( name : type ? : property-set ) + { + local result = $(name) ; +@@ -248,6 +251,12 @@ rule requirements ( properties * ) + { + local result ; + ++ if ! [ configure.builds has_atomic_flag_lockfree ++ : $(properties) : "lockfree boost::atomic_flag" ] ++ { ++ result += /boost/atomic//boost_atomic ; ++ } ++ + if pthread in $(properties) + { + result += BOOST_THREAD_POSIX ; diff --git a/meta/recipes-support/libcap/libcap.inc b/meta/recipes-support/libcap/libcap.inc index 772057f5107..1b11b85554b 100644 --- a/meta/recipes-support/libcap/libcap.inc +++ b/meta/recipes-support/libcap/libcap.inc @@ -10,7 +10,8 @@ DEPENDS += "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" # attr and pam are disabled by EXTRA_OEMAKE_class-native DEPENDS_class-native = "perl-native-runtime" -SRC_URI = "${DEBIAN_MIRROR}/main/libc/libcap2/${BPN}2_${PV}.orig.tar.gz" +SRC_URI = "${DEBIAN_MIRROR}/main/libc/libcap2/${BPN}2_${PV}.orig.tar.gz \ + file://fix-CAP_LAST_CAP.patch" PR = "r1" diff --git a/meta/recipes-support/libcap/libcap/fix-CAP_LAST_CAP.patch b/meta/recipes-support/libcap/libcap/fix-CAP_LAST_CAP.patch new file mode 100644 index 00000000000..a5571883d3b --- /dev/null +++ b/meta/recipes-support/libcap/libcap/fix-CAP_LAST_CAP.patch @@ -0,0 +1,39 @@ +fix CAP_LAST_CAP + +Upstream-Status: pending + +Two new capability CAP_BLOCK_SUSPEND and CAP_WAKE_ALARM have been added into +kernel, but libcap did not update them. +Once libcap uses its capability.h (the default value of KERNEL_HEADERS), and +application always use capability.h from kernel, that will make cap_get_flag +return wrong value. + +Signed-off-by: Roy Li +--- + libcap/include/linux/capability.h | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/libcap/include/linux/capability.h b/libcap/include/linux/capability.h +index 4924f2a..57026be 100644 +--- a/libcap/include/linux/capability.h ++++ b/libcap/include/linux/capability.h +@@ -360,7 +360,15 @@ struct cpu_vfs_cap_data { + CAP_SYS_ADMIN is not acceptable anymore. */ + #define CAP_SYSLOG 34 + +-#define CAP_LAST_CAP CAP_SYSLOG ++/* Allow triggering something that will wake the system */ ++ ++#define CAP_WAKE_ALARM 35 ++ ++/* Allow preventing system suspends */ ++ ++#define CAP_BLOCK_SUSPEND 36 ++ ++#define CAP_LAST_CAP CAP_BLOCK_SUSPEND + + #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP) + +-- +1.7.10.4 + diff --git a/meta/recipes-support/libnl/libnl/0001-fix-double-free-caused-by-freeing-link-af_data-in-rt.patch b/meta/recipes-support/libnl/libnl/0001-fix-double-free-caused-by-freeing-link-af_data-in-rt.patch new file mode 100644 index 00000000000..6d2c8ff72d0 --- /dev/null +++ b/meta/recipes-support/libnl/libnl/0001-fix-double-free-caused-by-freeing-link-af_data-in-rt.patch @@ -0,0 +1,41 @@ +From 6f37b439af7e96104aadd8ec3ae8d3882df8d102 Mon Sep 17 00:00:00 2001 +From: Jiri Pirko +Date: Wed, 21 Aug 2013 14:40:34 +0200 +Subject: [PATCH] fix double free caused by freeing link af_data in + rtnl_link_set_family() + +Introduced by commit 8026fe2e3a9089eff3f5a06ee6e3cc78d96334ed ("link: +Free and realloc af specific data upon rtnl_link_set_family()") + +link->l_af_data[link->l_af_ops->ao_family] is freed here but not set to +zero. That leads to double free made by link_free_data->do_foreach_af. + +Fix this by setting link->l_af_data[link->l_af_ops->ao_family] to zero +rigth after free. + +Signed-off-by: Jiri Pirko +Signed-off-by: Thomas Graf +--- + lib/route/link.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/lib/route/link.c b/lib/route/link.c +index a73e1db..0bb90a0 100644 +--- a/lib/route/link.c ++++ b/lib/route/link.c +@@ -1762,9 +1762,11 @@ void rtnl_link_set_family(struct rtnl_link *link, int family) + link->l_family = family; + link->ce_mask |= LINK_ATTR_FAMILY; + +- if (link->l_af_ops) ++ if (link->l_af_ops) { + af_free(link, link->l_af_ops, + link->l_af_data[link->l_af_ops->ao_family], NULL); ++ link->l_af_data[link->l_af_ops->ao_family] = NULL; ++ } + + link->l_af_ops = af_lookup_and_alloc(link, family); + } +-- +1.8.4 + diff --git a/meta/recipes-support/libnl/libnl_3.2.22.bb b/meta/recipes-support/libnl/libnl_3.2.22.bb index 30f85b29954..3c31b1ac866 100644 --- a/meta/recipes-support/libnl/libnl_3.2.22.bb +++ b/meta/recipes-support/libnl/libnl_3.2.22.bb @@ -12,7 +12,9 @@ DEPENDS = "flex-native bison-native" SRC_URI = "http://www.infradead.org/~tgr/${BPN}/files/${BP}.tar.gz \ file://fix-pktloc_syntax_h-race.patch \ file://fix-pc-file.patch \ - file://fix-lib-cache_mngr.c-two-parentheses-bugs.patch" + file://fix-lib-cache_mngr.c-two-parentheses-bugs.patch \ + file://0001-fix-double-free-caused-by-freeing-link-af_data-in-rt.patch \ + " SRC_URI[md5sum] = "2e1c889494d274aca24ce5f6a748e66e" SRC_URI[sha256sum] = "c7c5f267dfeae0c1a530bf96b71fb7c8dbbb07d54beef49b6712d8d6166f629b" diff --git a/scripts/contrib/python/generate-manifest-2.7.py b/scripts/contrib/python/generate-manifest-2.7.py index 124a1a42caa..37fe4731cd5 100755 --- a/scripts/contrib/python/generate-manifest-2.7.py +++ b/scripts/contrib/python/generate-manifest-2.7.py @@ -266,6 +266,9 @@ def make( self ): m.addPackage( "${PN}-html", "Python HTML Processing", "${PN}-core", "formatter.* htmlentitydefs.* htmllib.* markupbase.* sgmllib.* HTMLParser.* " ) + m.addPackage( "${PN}-importlib", "Python import implementation library", "${PN}-core", + "importlib" ) + m.addPackage( "${PN}-gdbm", "Python GNU Database Support", "${PN}-core", "lib-dynload/gdbm.so" ) diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py index 5696ca77fb9..ba68b60fcb1 100644 --- a/scripts/lib/bsp/kernel.py +++ b/scripts/lib/bsp/kernel.py @@ -62,7 +62,7 @@ def find_bblayers(): break if not bblayers: - print "Couldn't find BBLAYERS in 'bitbake -e' output, exiting." % \ + print "Couldn't find BBLAYERS in %s output, exiting." % \ bitbake_env_cmd sys.exit(1) diff --git a/scripts/lib/image/engine.py b/scripts/lib/image/engine.py index be29222df12..b3a9c7486ec 100644 --- a/scripts/lib/image/engine.py +++ b/scripts/lib/image/engine.py @@ -82,6 +82,8 @@ def find_artifacts(image_name): print "Couldn't get '%s' output, exiting." % bitbake_env_cmd sys.exit(1) + rootfs_dir = kernel_dir = hdddir = staging_data_dir = native_sysroot = "" + for line in bitbake_env_lines.split('\n'): if (get_line_val(line, "IMAGE_ROOTFS")): rootfs_dir = get_line_val(line, "IMAGE_ROOTFS") diff --git a/scripts/lib/mic/conf.py b/scripts/lib/mic/conf.py index 58fad51f893..b850d805206 100644 --- a/scripts/lib/mic/conf.py +++ b/scripts/lib/mic/conf.py @@ -186,10 +186,6 @@ def _parse_kickstart(self, ksconf=None): self.create['name_prefix'], self.create['name_suffix']) - # check selinux, it will block arm and btrfs image creation - misc.selinux_check(self.create['arch'], - [p.fstype for p in ks.handler.partition.partitions]) - def set_runtime(self, runtime): if runtime not in ("bootstrap", "native"): msger.error("Invalid runtime mode: %s" % runtime) diff --git a/scripts/lib/mic/creator.py b/scripts/lib/mic/creator.py index f3d0de19fcf..267928f877b 100644 --- a/scripts/lib/mic/creator.py +++ b/scripts/lib/mic/creator.py @@ -18,8 +18,8 @@ import os, sys, re from optparse import SUPPRESS_HELP -from mic import msger, rt_util -from mic.utils import cmdln, errors, rpmmisc +from mic import msger +from mic.utils import cmdln, errors from mic.conf import configmgr from mic.plugin import pluginmgr diff --git a/scripts/lib/mic/imager/baseimager.py b/scripts/lib/mic/imager/baseimager.py index 4d6be29a0e5..b7212493b43 100644 --- a/scripts/lib/mic/imager/baseimager.py +++ b/scripts/lib/mic/imager/baseimager.py @@ -26,12 +26,10 @@ import tarfile import glob -import rpm - from mic import kickstart from mic import msger from mic.utils.errors import CreatorError, Abort -from mic.utils import misc, grabber, runner, fs_related as fs +from mic.utils import misc, runner, fs_related as fs class BaseImageCreator(object): """Installs a system to a chroot directory. diff --git a/scripts/lib/mic/imager/livecd.py b/scripts/lib/mic/imager/livecd.py index a992ee07062..e36f4a76c61 100644 --- a/scripts/lib/mic/imager/livecd.py +++ b/scripts/lib/mic/imager/livecd.py @@ -20,7 +20,7 @@ import shutil from mic import kickstart, msger -from mic.utils import fs_related, rpmmisc, runner, misc +from mic.utils import fs_related, runner, misc from mic.utils.errors import CreatorError from mic.imager.loop import LoopImageCreator @@ -741,7 +741,7 @@ def _configure_bootloader(self, isodir): self._configure_syslinux_bootloader(isodir) self._configure_efi_bootloader(isodir) -arch = rpmmisc.getBaseArch() +arch = "i386" if arch in ("i386", "x86_64"): LiveCDImageCreator = x86LiveImageCreator elif arch.startswith("arm"): diff --git a/scripts/lib/mic/kickstart/custom_commands/partition.py b/scripts/lib/mic/kickstart/custom_commands/partition.py index 302cace2346..4b11195160a 100644 --- a/scripts/lib/mic/kickstart/custom_commands/partition.py +++ b/scripts/lib/mic/kickstart/custom_commands/partition.py @@ -204,19 +204,28 @@ def prepare_rootfs(self, cr_workdir, oe_builddir, rootfs_dir, Currently handles ext2/3/4 and btrfs. """ + pseudo = "export PSEUDO_PREFIX=%s/usr;" % native_sysroot + pseudo += "export PSEUDO_LOCALSTATEDIR=%s/../pseudo;" % rootfs_dir + pseudo += "export PSEUDO_PASSWD=%s;" % rootfs_dir + pseudo += "export PSEUDO_NOSYMLINKEXP=1;" + pseudo += "%s/usr/bin/pseudo " % native_sysroot + if self.fstype.startswith("ext"): return self.prepare_rootfs_ext(cr_workdir, oe_builddir, - rootfs_dir, native_sysroot) + rootfs_dir, native_sysroot, + pseudo) elif self.fstype.startswith("btrfs"): return self.prepare_rootfs_btrfs(cr_workdir, oe_builddir, - rootfs_dir, native_sysroot) + rootfs_dir, native_sysroot, + pseudo) def prepare_rootfs_ext(self, cr_workdir, oe_builddir, rootfs_dir, - native_sysroot): + native_sysroot, pseudo): """ Prepare content for an ext2/3/4 rootfs partition. """ populate_script = "%s/usr/bin/populate-extfs.sh" % native_sysroot + image_extra_space = 10240 image_rootfs = rootfs_dir @@ -238,7 +247,7 @@ def prepare_rootfs_ext(self, cr_workdir, oe_builddir, rootfs_dir, rc, out = exec_native_cmd(mkfs_cmd, native_sysroot) populate_cmd = populate_script + " " + image_rootfs + " " + rootfs - rc, out = exec_native_cmd(populate_cmd, native_sysroot) + rc, out = exec_native_cmd(pseudo + populate_cmd, native_sysroot) # get the rootfs size in the right units for kickstart (Mb) du_cmd = "du -Lbms %s" % rootfs @@ -251,7 +260,7 @@ def prepare_rootfs_ext(self, cr_workdir, oe_builddir, rootfs_dir, return 0 def prepare_rootfs_btrfs(self, cr_workdir, oe_builddir, rootfs_dir, - native_sysroot): + native_sysroot, pseudo): """ Prepare content for a btrfs rootfs partition. @@ -274,7 +283,7 @@ def prepare_rootfs_btrfs(self, cr_workdir, oe_builddir, rootfs_dir, mkfs_cmd = "mkfs.%s -b %d -r %s %s" % \ (self.fstype, rootfs_size * 1024, image_rootfs, rootfs) - rc, out = exec_native_cmd(mkfs_cmd, native_sysroot) + rc, out = exec_native_cmd(pseudo + mkfs_cmd, native_sysroot) # get the rootfs size in the right units for kickstart (Mb) du_cmd = "du -Lbms %s" % rootfs diff --git a/scripts/lib/mic/pluginbase.py b/scripts/lib/mic/pluginbase.py index 6ac195b42d1..2f9d7209e98 100644 --- a/scripts/lib/mic/pluginbase.py +++ b/scripts/lib/mic/pluginbase.py @@ -83,11 +83,6 @@ def do_chroot(self): class BackendPlugin(_Plugin): mic_plugin_type="backend" - # suppress the verbose rpm warnings - if msger.get_loglevel() != 'debug': - import rpm - rpm.setVerbosity(rpm.RPMLOG_ERR) - def addRepository(self): pass diff --git a/scripts/lib/mic/plugins/imager/direct_plugin.py b/scripts/lib/mic/plugins/imager/direct_plugin.py index 53381e5e011..e015256fa1b 100644 --- a/scripts/lib/mic/plugins/imager/direct_plugin.py +++ b/scripts/lib/mic/plugins/imager/direct_plugin.py @@ -30,7 +30,7 @@ import re import tempfile -from mic import chroot, msger, rt_util +from mic import chroot, msger from mic.utils import misc, fs_related, errors, runner, cmdln from mic.conf import configmgr from mic.plugin import pluginmgr diff --git a/scripts/lib/mic/plugins/imager/fs_plugin.py b/scripts/lib/mic/plugins/imager/fs_plugin.py index 8e758db544c..6bcaf007290 100644 --- a/scripts/lib/mic/plugins/imager/fs_plugin.py +++ b/scripts/lib/mic/plugins/imager/fs_plugin.py @@ -18,7 +18,7 @@ import os import sys -from mic import chroot, msger, rt_util +from mic import chroot, msger from mic.utils import cmdln, misc, errors, fs_related from mic.imager import fs from mic.conf import configmgr diff --git a/scripts/lib/mic/plugins/imager/livecd_plugin.py b/scripts/lib/mic/plugins/imager/livecd_plugin.py index d24ef592648..82cb1af7dca 100644 --- a/scripts/lib/mic/plugins/imager/livecd_plugin.py +++ b/scripts/lib/mic/plugins/imager/livecd_plugin.py @@ -19,7 +19,7 @@ import shutil import tempfile -from mic import chroot, msger, rt_util +from mic import chroot, msger from mic.utils import misc, fs_related, errors from mic.conf import configmgr import mic.imager.livecd as livecd diff --git a/scripts/lib/mic/plugins/imager/liveusb_plugin.py b/scripts/lib/mic/plugins/imager/liveusb_plugin.py index 7aa8927df95..3d53c84410c 100644 --- a/scripts/lib/mic/plugins/imager/liveusb_plugin.py +++ b/scripts/lib/mic/plugins/imager/liveusb_plugin.py @@ -19,7 +19,7 @@ import shutil import tempfile -from mic import chroot, msger, rt_util +from mic import chroot, msger from mic.utils import misc, fs_related, errors from mic.utils.partitionedfs import PartitionedMount from mic.conf import configmgr diff --git a/scripts/lib/mic/plugins/imager/loop_plugin.py b/scripts/lib/mic/plugins/imager/loop_plugin.py index 8f4b030f6b8..2a05b3c238b 100644 --- a/scripts/lib/mic/plugins/imager/loop_plugin.py +++ b/scripts/lib/mic/plugins/imager/loop_plugin.py @@ -19,7 +19,7 @@ import shutil import tempfile -from mic import chroot, msger, rt_util +from mic import chroot, msger from mic.utils import misc, fs_related, errors, cmdln from mic.conf import configmgr from mic.plugin import pluginmgr diff --git a/scripts/lib/mic/plugins/imager/raw_plugin.py b/scripts/lib/mic/plugins/imager/raw_plugin.py index 1b9631dfa2b..f9625b87e84 100644 --- a/scripts/lib/mic/plugins/imager/raw_plugin.py +++ b/scripts/lib/mic/plugins/imager/raw_plugin.py @@ -20,7 +20,7 @@ import re import tempfile -from mic import chroot, msger, rt_util +from mic import chroot, msger from mic.utils import misc, fs_related, errors, runner, cmdln from mic.conf import configmgr from mic.plugin import pluginmgr diff --git a/scripts/lib/mic/utils/fs_related.py b/scripts/lib/mic/utils/fs_related.py index 61617353eba..dd420e88dc1 100644 --- a/scripts/lib/mic/utils/fs_related.py +++ b/scripts/lib/mic/utils/fs_related.py @@ -57,7 +57,10 @@ def find_binary_path(binary): bin_path = "%s/%s" % (path, binary) if os.path.exists(bin_path): return bin_path - raise CreatorError("Command '%s' is not available." % binary) + + print "External command '%s' not found, exiting." % binary + print " (Please install '%s' on your host system)" % binary + sys.exit(1) def makedirs(dirname): """A version of os.makedirs() that doesn't throw an diff --git a/scripts/lib/mic/utils/misc.py b/scripts/lib/mic/utils/misc.py index 67ddef2e44d..95241d7f151 100644 --- a/scripts/lib/mic/utils/misc.py +++ b/scripts/lib/mic/utils/misc.py @@ -42,10 +42,8 @@ from mic import msger from mic.utils.errors import CreatorError, SquashfsError from mic.utils.fs_related import find_binary_path, makedirs -from mic.utils.grabber import myurlgrab from mic.utils.proxy import get_proxy_for from mic.utils import runner -from mic.utils import rpmmisc RPM_RE = re.compile("(.*)\.(.*) (.*)-(.*)") diff --git a/scripts/lib/mic/utils/partitionedfs.py b/scripts/lib/mic/utils/partitionedfs.py index e8cded26e06..6607466a83a 100644 --- a/scripts/lib/mic/utils/partitionedfs.py +++ b/scripts/lib/mic/utils/partitionedfs.py @@ -45,11 +45,7 @@ def __init__(self, mountdir, skipformat = False): self.mountOrder = [] self.unmountOrder = [] self.parted = find_binary_path("parted") - self.kpartx = find_binary_path("kpartx") - self.mkswap = find_binary_path("mkswap") self.btrfscmd=None - self.mountcmd = find_binary_path("mount") - self.umountcmd = find_binary_path("umount") self.skipformat = skipformat self.snapshot_created = self.skipformat # Size of a sector used in calculations @@ -352,6 +348,16 @@ def __format_disks(self): self.__run_parted(["-s", d['disk'].device, "set", "%d" % p['num'], flag_name, "on"]) + # Parted defaults to enabling the lba flag for fat16 partitions, + # which causes compatibility issues with some firmware (and really + # isn't necessary). + if parted_fs_type == "fat16": + if d['ptable_format'] == 'msdos': + msger.debug("Disable 'lba' flag for partition '%s' on disk '%s'" % \ + (p['num'], d['disk'].device)) + self.__run_parted(["-s", d['disk'].device, "set", + "%d" % p['num'], "lba", "off"]) + # If the partition table format is "gpt", find out PARTUUIDs for all # the partitions. And if users specified custom parition type UUIDs, # set them. diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py index fe6e4e0320d..05d9fd65ed3 100755 --- a/scripts/relocate_sdk.py +++ b/scripts/relocate_sdk.py @@ -31,7 +31,14 @@ import re import errno -old_prefix = re.compile(b"##DEFAULT_INSTALL_DIR##") +if sys.version < '3': + def b(x): + return x +else: + def b(x): + return x.encode(sys.getfilesystemencoding()) + +old_prefix = re.compile(b("##DEFAULT_INSTALL_DIR##")) def get_arch(): f.seek(0) @@ -92,15 +99,15 @@ def change_interpreter(elf_file_name): # External SDKs with mixed pre-compiled binaries should not get # relocated so look for some variant of /lib fname = f.read(11) - if fname.startswith(b"/lib/") or fname.startswith(b"/lib64/") or \ - fname.startswith(b"/lib32/") or fname.startswith(b"/usr/lib32/") or \ - fname.startswith(b"/usr/lib32/") or fname.startswith(b"/usr/lib64/"): + if fname.startswith(b("/lib/")) or fname.startswith(b("/lib64/")) or \ + fname.startswith(b("/lib32/")) or fname.startswith(b("/usr/lib32/")) or \ + fname.startswith(b("/usr/lib32/")) or fname.startswith(b("/usr/lib64/")): break if (len(new_dl_path) >= p_filesz): print("ERROR: could not relocate %s, interp size = %i and %i is needed." \ % (elf_file_name, p_memsz, len(new_dl_path) + 1)) break - dl_path = new_dl_path + b"\0" * (p_filesz - len(new_dl_path)) + dl_path = new_dl_path + b("\0") * (p_filesz - len(new_dl_path)) f.seek(p_offset) f.write(dl_path) break @@ -132,40 +139,40 @@ def change_dl_sysdirs(): sh_name, sh_type, sh_flags, sh_addr, sh_offset, sh_size, sh_link,\ sh_info, sh_addralign, sh_entsize = struct.unpack(sh_fmt, sh_hdr) - name = sh_strtab[sh_name:sh_strtab.find(b"\0", sh_name)] + name = sh_strtab[sh_name:sh_strtab.find(b("\0"), sh_name)] """ look only into SHT_PROGBITS sections """ if sh_type == 1: f.seek(sh_offset) """ default library paths cannot be changed on the fly because """ """ the string lengths have to be changed too. """ - if name == b".sysdirs": + if name == b(".sysdirs"): sysdirs = f.read(sh_size) sysdirs_off = sh_offset sysdirs_sect_size = sh_size - elif name == b".sysdirslen": + elif name == b(".sysdirslen"): sysdirslen = f.read(sh_size) sysdirslen_off = sh_offset - elif name == b".ldsocache": + elif name == b(".ldsocache"): ldsocache_path = f.read(sh_size) new_ldsocache_path = old_prefix.sub(new_prefix, ldsocache_path) # pad with zeros - new_ldsocache_path += b"\0" * (sh_size - len(new_ldsocache_path)) + new_ldsocache_path += b("\0") * (sh_size - len(new_ldsocache_path)) # write it back f.seek(sh_offset) f.write(new_ldsocache_path) if sysdirs != "" and sysdirslen != "": - paths = sysdirs.split(b"\0") - sysdirs = b"" - sysdirslen = b"" + paths = sysdirs.split(b("\0")) + sysdirs = b("") + sysdirslen = b("") for path in paths: """ exit the loop when we encounter first empty string """ - if path == b"": + if path == b(""): break new_path = old_prefix.sub(new_prefix, path) - sysdirs += new_path + b"\0" + sysdirs += new_path + b("\0") if arch == 32: sysdirslen += struct.pack(" /dev/null; then + echo "OVMF BIOS detected, default VGA adapter forced." + OVERRIDE_VGA="false" + fi +fi + . $INTERNAL_SCRIPT exit $? diff --git a/scripts/runqemu-extract-sdk b/scripts/runqemu-extract-sdk index 509af662162..4ce906aef01 100755 --- a/scripts/runqemu-extract-sdk +++ b/scripts/runqemu-extract-sdk @@ -54,13 +54,13 @@ fi TAR_OPTS="" if [[ "$ROOTFS_TARBALL" =~ tar\.bz2$ ]]; then - TAR_OPTS="-xjf" + TAR_OPTS="--numeric-owner -xjf" fi if [[ "$ROOTFS_TARBALL" =~ tar\.gz$ ]]; then - TAR_OPTS="-xzf" + TAR_OPTS="--numeric-owner -xzf" fi if [[ "$ROOTFS_TARBALL" =~ \.tar$ ]]; then - TAR_OPTS="-xf" + TAR_OPTS="--numeric-owner -xf" fi if [ -z "$TAR_OPTS" ]; then echo "Error: Unable to determine sdk tarball format" diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal index 74b0c356d07..86937e20140 100755 --- a/scripts/runqemu-internal +++ b/scripts/runqemu-internal @@ -357,7 +357,9 @@ fi if [ "$MACHINE" = "qemux86" ]; then QEMU=qemu-system-i386 - QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware" + if $OVERRIDE_VGA; then + QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware" + fi if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" ]; then KERNCMDLINE="vga=0 uvesafb.mode_option=640x480-32 root=$DROOT rw mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD" QEMUOPTIONS="$QEMU_NETWORK_CMD $ROOTFS_OPTIONS $QEMU_UI_OPTIONS" @@ -381,7 +383,9 @@ fi if [ "$MACHINE" = "qemux86-64" ]; then QEMU=qemu-system-x86_64 - QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware" + if $OVERRIDE_VGA; then + QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware" + fi if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" ]; then KERNCMDLINE="vga=0 uvesafb.mode_option=640x480-32 root=$DROOT rw mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD" QEMUOPTIONS="$QEMU_NETWORK_CMD $ROOTFS_OPTIONS $QEMU_UI_OPTIONS" @@ -427,7 +431,9 @@ if [ "$MACHINE" = "qemumips" -o "$MACHINE" = "qemumipsel" -o "$MACHINE" = "qemum qemumips64) QEMU=qemu-system-mips64 ;; esac MACHINE_SUBTYPE=malta - QEMU_UI_OPTIONS="-vga cirrus $QEMU_UI_OPTIONS" + if $OVERRIDE_VGA; then + QEMU_UI_OPTIONS="-vga cirrus $QEMU_UI_OPTIONS" + fi if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" ]; then #KERNCMDLINE="root=/dev/hda console=ttyS0 console=tty0 $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" KERNCMDLINE="root=/dev/hda rw console=ttyS0 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" @@ -524,7 +530,7 @@ if [ "$MACHINE" = "qemuzynq" ]; then fi if [ "x$RAMFS" = "xtrue" ]; then - QEMUOPTIONS="-initrd $ROOTFS -nographic" + QEMUOPTIONS="-initrd $ROOTFS" KERNCMDLINE="root=/dev/ram0 debugshell" fi diff --git a/scripts/wic b/scripts/wic index 06e72bbfda0..b6fd16c5df7 100755 --- a/scripts/wic +++ b/scripts/wic @@ -31,11 +31,13 @@ __version__ = "0.1.0" +# Python Standard Library modules import os import sys import optparse import logging +# External modules scripts_path = os.path.abspath(os.path.dirname(os.path.abspath(sys.argv[0]))) lib_path = scripts_path + '/lib' sys.path = sys.path + [lib_path] @@ -75,6 +77,14 @@ def wic_create_subcommand(args, usage_str): parser.print_help() sys.exit(1) + if not options.image_name and not (options.rootfs_dir and + options.bootimg_dir and + options.kernel_dir and + options.native_sysroot): + print "Build artifacts not completely specified, exiting." + print " (Use 'wic -e' or 'wic -r -b -k -n' to specify artifacts)" + sys.exit(1) + if not options.image_name: options.build_check = False @@ -111,6 +121,38 @@ def wic_create_subcommand(args, usage_str): bootimg_dir = options.bootimg_dir kernel_dir = options.kernel_dir native_sysroot = options.native_sysroot + if not os.path.isdir(rootfs_dir): + print "--roofs-dir (-r) not found, exiting\n" + sys.exit(1) + if not os.path.isdir(bootimg_dir): + print "--bootimg-dir (-b) not found, exiting\n" + sys.exit(1) + if not os.path.isdir(kernel_dir): + print "--kernel-dir (-k) not found, exiting\n" + sys.exit(1) + if not os.path.isdir(native_sysroot): + print "--native-sysroot (-n) not found, exiting\n" + sys.exit(1) + else: + not_found = not_found_dir = "" + if not os.path.isdir(rootfs_dir): + (not_found, not_found_dir) = ("rootfs-dir", rootfs_dir) + elif not os.path.isdir(hdddir) and not os.path.isdir(staging_data_dir): + (not_found, not_found_dir) = ("bootimg-dir", bootimg_dir) + elif not os.path.isdir(kernel_dir): + (not_found, not_found_dir) = ("kernel-dir", kernel_dir) + elif not os.path.isdir(native_sysroot): + (not_found, not_found_dir) = ("native-sysroot", native_sysroot) + if not_found: + if not not_found_dir: + not_found_dir = "Completely missing artifact - wrong image (.wks) used?" + print "Build artifacts not found, exiting." + print " (Please check that the build artifacts for the machine" + print " selected in local.conf actually exist and that they" + print " are the correct artifacts for the image (.wks file)).\n" + print "The artifact that couldn't be found was %s:\n %s" % \ + (not_found, not_found_dir) + sys.exit(1) wic_create(args, wks_file, rootfs_dir, bootimg_dir, kernel_dir, native_sysroot, hdddir, staging_data_dir, scripts_path,