Paul Eggleton [Mon, 23 Jul 2012 09:43:22 +0000 (10:43 +0100)]
classes/rootfs_rpm: improve speed of RPM rootfs construction
Improve the performance of the RPM backend during do_rootfs by
performing most of the package name to file resolution in a separate
utility written in C, processing the entire list of packages at once
rather than running rpm on the command line which loads the RPM database
for every package.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Richard Purdie [Thu, 26 Jul 2012 12:56:58 +0000 (12:56 +0000)]
sstate.bbclass: Add a string representing the lsb release to native/cross sstate
This patch adds the lsb name and revision to the path used for sstate files.
This means that reuse of sstate files between different distributions is restricted
by default. The behaviour can be configured using mirror urls, for example:
would map Ubuntu 11.10 to a more generic "Ubuntu" named sstate feed.
Usually, more modern distros have increased libc versions for example
so whilst more older native/cross sstate packages will usually work on newer
distros, the opposite is not true. This patch allows development of policy
to better handle this although no default policy is currently being used.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Tue, 24 Jul 2012 12:37:01 +0000 (12:37 +0000)]
sstate: Add a two character subdirectory to the sstate directory layout
Currently all sstate files are placed into one directory. This does not scale and
causes a variety of filesystem issues. This patch adds a two character subdirectory
to the layout (based on the first two characters of the hash) so that files
can be split into several directories.
This should help performance of sstate in most cases.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Thu, 26 Jul 2012 13:05:51 +0000 (14:05 +0100)]
lib/oe/lsb: Add basic LSB functions
This code was written by Christopher Larson <chris_larson@mentor.com> and
allows generation of the LSB release data based upon the lsb_release
command. It also includes a helper function to generate a string
representing a given distribution.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Yao Zhao [Thu, 26 Jul 2012 20:34:19 +0000 (16:34 -0400)]
bzip2-native: handling native path issue
follow Richard's approach, modify bzip2-native recipe to install bzip2 package
binaries to STAGING_BINDIR_NATIVE/bzip2-native to avoid problems when other
package is doing upack to reference bzip2. libbz2.so* still installs to
STAGING_LIBDIR_NATIVE.
change python-native to depends on bzip2-replacement-native instead of
bzip2-full-native and add EXTRANATIVEPATH for bzip2-native.
Didn't add bzip2native.bbclass as python-native is the only user so far.
Signed-off-by: Yao Zhao <yao.zhao@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Paul Eggleton [Thu, 26 Jul 2012 14:35:00 +0000 (15:35 +0100)]
classes/package: reduce dbg package dependencies
Make dbg package dependencies added via DEPCHAIN_POST less aggressive -
only add dependencies on dbg packages for shared library dependencies.
This avoids dragging in extraneous packages (such as eglibc-dbg forcing
bash-dbg to be installed) whilst preserving the ability to easily debug
into shared libraries in use by an application by just requesting the
installation of the single dbg package for that application.
For task recipes however we preserve the previous behaviour, since when
you install task-xxx-dbg you expect the dbg packages for every package
in the task to be installed. Unfortunately not all of our tasks inherit
from task.bbclass so we just use a name match - this should be tidied up
later.
Fixes [YOCTO #2599].
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
u-boot.inc: update linker arguments to pass --sysroot arg
If we are building from sstate-cache it's possible to be building
from another folder on another machine, therefore the linker requires
that a proper --sysroot is passed too it so it can find things like
libgcc.a and avoid errors such as:
Since files installation dirs are DESTDIR/etc/, DESTDIR/sbin etc
in Makefile, not DESTDIR/${sysconfdir}/, DESTDIR/${sbindir}/, for
the native package, a prefix can not be inserted which is needed
when do the next step of install and do_populate_sysroot.
Now we define do_install_virtclass-native in which DESTDIR is
${D}/${STAGING_DIR_NATIVE}
This lets us control whether we build position independent executables. As, as
far as I know no distros are adding a 'pie' distro feature, the effect of this
commit for most will be to disable pie in bluez4. I think this is best to
ensure consistent behavior among the recipes with regard to this.
This also sidesteps a build failure I've seen with bluez4 failing due to
libudev.a not having been built fPIC.
Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
bitbake.conf: override -cpu for qemu on ppc with SPE
We use -mtune flags which lets our application have
SPE intruction in them which is a good thing but when
running qemu especially in user mode these application
wont work with default powerpc emulation. Therefore we
have to add proper -cpu option to let qemu emulate for
a given cpu.
qemu: Fix illegal instruction errors on e500 emulation
I caught this when running user mode qemu for ppc/e500 applications
which had SPE instructions in them will abort with illegal instruction
error all the time.
The patch is already applied upstream we needed a backport into 0.15.x
The pkg.m4 file should be packaged as part of the base package
instead of the -dev package, it had been in the base package, but
I seemed to have missed that it moved during my PACKAGES reorder,
and this caused the meta-toolchain to break
Paul Eggleton [Thu, 26 Jul 2012 10:51:28 +0000 (11:51 +0100)]
usbutils: avoid dependency on bash
By virtue of having #!/bin/bash, the usb-devices script declared that it
requires bash, however manual examination, checkbashisms and tests with
dash and busybox show that it doesn't contain any bashisms, so change
the script's header and remove the RDEPENDS on bash.
Additionally, update-usbids.sh was manually checked for bashisms, run
through checkbashisms and tested with busybox (although it did not have
a bash-specific header).
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Paul Eggleton [Thu, 26 Jul 2012 14:34:59 +0000 (15:34 +0100)]
classes/package: do not add self-dependencies to dev/dbg packages
Avoid adding dependencies to dev and dbg packages on themselves via the
DEPCHAIN_* handling code. These don't actually cause any problems, but
they do complicate dependency graphs.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Wed, 25 Jul 2012 20:16:46 +0000 (20:16 +0000)]
base/perlnative/pythonnative/gzipnative: Add a new variable to enable easier handling of native path issues
If something is listed in ASSUME_PROVIDED but also manually built (like bzip2-native and
bzip2-replacement-native), we need to ensure that the installed binaries are only accessed
for things which list the provider in DEPENDS.
This patch adds a generic mechanism to handle this instead of everything reinventing the
wheel. EXTRANATIVEPATH += "perl-native" will ensure that ${STAGING_BINDIR_NATIVE}/perl-native
is added to PATH.
This means that:
a) Such providers should install to ${bindir}/xxx-native
b) Should PROVIDE += "xxxx-replacement-native"
c) That users should DEPEND on xxx-replacement-native and have EXTRANATIVEPATH += "xxx-native"
This patch enables this at the core level, the bzip2 recipe still needs adjusting to work
like this along with adjustment of the users of bzip2-replacement-native (python-native?).
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
some bash macros are missing from acinclude.m4 which are added up-stream. This
wasn't actually breaking anything but but it was causing the configure script
to not run all the tests it's intended to run.
move the acinclude.m4 from "files" folder to version specific folders so that
readline-5.2 continue to use the older acinclude.m4 only readline-6.2 use the
updated one
m4/nullsort.m4 tries to find sort dir, and write it to updatedb,
but nullsort.m4 is checking the host dir. Once the sort dirs on
target and host are different, updatedb will fail due to wrong
sort dir.
Since we always have sort under ${bindir}, so we can assign it
directly.
The system will be hung when udhcpc starts, if nfs is mounted
at "/" directory and default route is different after starting
udhcpc.
The cause is that root_is_nfs() does not work after kernel-2.6.37,
since the device name has been changed from /dev/root to
${IPADDR}:${NFSDIR} on /proc/mounts. which leads to remove
the default routes to nfs server,
Now we use a loose match to check if rootfs is nfs.
eglibc: Fix build when OPTION_POSIX_WIDE_CHAR_DEVICE_IO is not set
poky-tiny disables certain eglibc options which gives good excercise
for eglibc's componentized builds. This patch essentially updates the
GLRO patch to account for additions of GLRO(dl_debug_mask) and
converts them to GLRO_dl_debug_mask
Secondly adds a new patch where it was creating a undefined alias
because we were using INTUSE macro which got exposed when we
disable OPTION_POSIX_WIDE_CHAR_DEVICE_IO
currently gcc installs a limits.h which references to another
limits.h which it expects from target sysroot and that header
in target sysroot will come from eglibc. So we need to break
this catch-22 and hence we install a self sufficient limits.h
which is then happy when referenced and doesnt complain about
missing limits.h from target sysroot.
This is mostly used when eglibc-initial configure is run
eglibc-initial: Fix build failure due to missing limits.h
We have had these things in place to overcome a limitation
from our gcc-initial-cross not staging a self sufficient
limits.h. Now thats fixed we do reset TOOLCHAIN_OPTIONS
to point to sysroot where linux kernel headers are staged
and not the bootstrap sysroot which will infact be popuated
by eglibc-initial itself.
Secondly we dont need to set CPPFLAGS specially as we
are doing that in eglibc.inc so we override that
Paul Eggleton [Mon, 23 Jul 2012 21:42:26 +0000 (22:42 +0100)]
classes/package_deb: add PackageArch field
If we want to query the PACKAGE_ARCH from the installed package (as we
do in order to be able to do a pkgdata lookup for example) then we need
to have this stored in its own field as this is not always the same as
the Architecture field for deb packages.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Andrei Gherzan [Mon, 23 Jul 2012 21:42:24 +0000 (22:42 +0100)]
package.bbclass: Create symlinks for packages with different packaged name
While generating license.manifest package information is searched in:
filename=`ls ${TMPDIR}/pkgdata/*/runtime/${pkg}| head -1`
This is ok as long as package name is the same as the package name
after packaging.
For example dbus is packaged as dbus-1. So, searching
ls ${TMPDIR}/pkgdata/*/runtime/dbus-1 will fail because there is no file
with this package name.
Create a symlink to the pkgdata file in a runtime-reverse directory so
that these reverse lookups are possible.
Fixes [YOCTO #2638].
Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
kernel bbclass: Recreate uImage only when KEEPUIMAGE != "yes"
The intent of the uImage code in this class includes the following
1) be able to specify custom load addresses without needing to patch the kernel
2) add better information to the uImage description field
The current state is a NOP anyway, the kernel will always build a uImage when you tell it to 'make uImage'.
weakly Set KEEPUIMAGE to 'yes' in default-distrovars.inc which preserve the
current OE-Core behavior. Machines which are being ported from oe.dev and need to
regenerate uImage can set this to be empty
This recipe is imported from meta-oe its a requirement for
systemd to work. Now that systemd is living in a layer of
its own. Lets have this recipe into core metadata
Paul Eggleton [Mon, 23 Jul 2012 08:38:46 +0000 (09:38 +0100)]
dhcp: remove dependency of dev/staticdev packages on main package
The main package is empty and is not produced, which leaves the dev
and staticdev packages broken. Remove the dependencies (added in
bitbake.conf by default) to fix this.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Otavio Salvador [Mon, 23 Jul 2012 17:37:17 +0000 (14:37 -0300)]
shadow: use 'users' group by default
The rootfs has 'users' group at number 100 and without this fix it
would assign to a non-existent group and if a group with gid as 1000
is created later it would own all files for users created.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Otavio Salvador [Mon, 23 Jul 2012 17:37:16 +0000 (14:37 -0300)]
shadow-native: use 'users' group by default
The rootfs has 'users' group at number 100 and without this fix it
would assign to a non-existent group and if a group with gid as 1000
is created later it would own all files for users created.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Without that fix we have the following while compiling compat-wireless.
include/linux/mmzone.h:18:30: fatal error: generated/bounds.h: No such file or directory
Note that the compat-wireless recipe will be added in another commit.
make -C $kerneldir _mrproper_scripts deleted this file along with
other things so we resurrect it with this patch.
initscripts: don't bg mk_dirs in populate-volatile
If a directory needs to be created to create something else in volatiles,
there's no guarantees on ordering due to the backgrounding. We can't guarantee
with certainty that the create directory commands are complete before the
later ones run. This ensures that we wait for directory creations to complete
before we proceed.
Chris Hallinan hit an actual failure due to this back in March of last year.
Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Richard Purdie [Mon, 23 Jul 2012 14:28:46 +0000 (14:28 +0000)]
libgcc: Add missing dependency on libc:do_package
do_package writes out shlibs data and libgcc can depend on the values
there. We therefore need to express the depdency so that sstate can account
for it for example.
Without this a version change in eglibc can "psersist" in the sstate cache
and corrupt builds.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Mon, 23 Jul 2012 11:24:34 +0000 (11:24 +0000)]
grub: Allow reautoconf with the correct parameters
Without this change, an effective reautoconf happens at compile time with potentially
incorrect parameters. This change ensures it happens once, in do_configure with the
correct parameters.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Fri, 20 Jul 2012 16:19:10 +0000 (17:19 +0100)]
gnome-doc-utils: Update to use python-native
This includes a wrapper so that the full path to python-native is encoded whilst not
exceeding any environment length constraints as hinted at in the patch to this area
of code already included.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Robert P. J. Day [Fri, 20 Jul 2012 15:19:24 +0000 (11:19 -0400)]
kernel-yocto.bbclass: Delete superfluous creation of ${S}/.git directory
In do_kernel_checkout(), replace the creation of ${S}/.git with just
the creation of ${S} since the .git subdirectory is created only a few
lines later using a "mv". Here's the original code:
rm -rf ${S}
mkdir -p ${S}/.git
echo "WARNING. ${WORKDIR}/git is not a bare clone."
echo "Ensure that the SRC_URI includes the 'bareclone=1' option."
# we can fix up the kernel repository, but at the least the meta
# branch must be present. The machine branch may be created later.
mv ${WORKDIR}/git/.git ${S} <-- See? There it is.
There's no functional change here, it's just less confusing.
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Robert P. J. Day [Fri, 20 Jul 2012 15:19:23 +0000 (11:19 -0400)]
kernel-yocto.bbclass: Fix some obvious typoes in comments.
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Morgan Little [Thu, 19 Jul 2012 17:46:06 +0000 (13:46 -0400)]
python-native: Put binaries in seperate directory
Update python-native to install the binaries in the python-native directory,
add pythonnative.bbclass to let recipes that need python-native use the
binaries and update disutils access the new binaries. Update distutils-base
to inherit pythonnative.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>