diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/autotools.bbclass | 15 | ||||
-rw-r--r-- | classes/base.bbclass | 2 | ||||
-rw-r--r-- | classes/cpan.bbclass | 4 | ||||
-rw-r--r-- | classes/e.bbclass | 28 | ||||
-rw-r--r-- | classes/efl.bbclass | 49 | ||||
-rw-r--r-- | classes/efl_base.bbclass | 14 | ||||
-rw-r--r-- | classes/efl_library.bbclass | 9 | ||||
-rw-r--r-- | classes/kernel-arch.bbclass | 8 | ||||
-rw-r--r-- | classes/kernel.bbclass | 72 | ||||
-rw-r--r-- | classes/package.bbclass | 2 | ||||
-rw-r--r-- | classes/packaged-staging.bbclass | 23 | ||||
-rw-r--r-- | classes/rootfs_ipk.bbclass | 4 | ||||
-rw-r--r-- | classes/testlab.bbclass | 4 |
13 files changed, 162 insertions, 72 deletions
diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index 1f03825b92..9d741408f4 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -211,9 +211,20 @@ autotools_stage_all() { else # Otherwise libtool wasn't used, and lib/ can be copied # directly. - echo "cp -fpPR ${STAGE_TEMP}/${libdir}/* ${STAGING_LIBDIR}" - cp -fpPR ${STAGE_TEMP}/${libdir}/* ${STAGING_LIBDIR} + autotools_stage_dir ${STAGE_TEMP}/${libdir} ${STAGING_LIBDIR} fi + + fi + # Ok, this is nasty. pkgconfig.bbclass is usually used to install .pc files, + # however some packages rely on the presence of .pc files to enable/disable + # their configurataions in which case we better should not install everything + # unconditionally, but rather depend on the actual results of make install. + # The good news though: a) there are not many packages doing this and + # b) packaged staging will fix that anyways. :M: + if [ "${AUTOTOOLS_STAGE_PKGCONFIG}" = "1" ] + then + echo "cp -f ${STAGE_TEMP}/${libdir}/pkgconfig/*.pc ${STAGING_LIBDIR}/pkgconfig/" + cp -f ${STAGE_TEMP}/${libdir}/pkgconfig/*.pc ${STAGING_LIBDIR}/pkgconfig/ fi rm -rf ${STAGE_TEMP}/${mandir} || true rm -rf ${STAGE_TEMP}/${infodir} || true diff --git a/classes/base.bbclass b/classes/base.bbclass index c2ce508538..1213ef07fa 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -571,7 +571,7 @@ def oe_unpack_file(file, data, url = None): elif file.endswith('.bz2'): cmd = 'bzip2 -dc %s > %s' % (file, efile) elif file.endswith('.zip'): - cmd = 'unzip -q' + cmd = 'unzip -q -o' (type, host, path, user, pswd, parm) = bb.decodeurl(url) if 'dos' in parm: cmd = '%s -a' % cmd diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass index 506d4c4c81..ca5303d97f 100644 --- a/classes/cpan.bbclass +++ b/classes/cpan.bbclass @@ -50,13 +50,13 @@ cpan_do_compile () { } cpan_do_install () { - if [ ${@is_target(d)} == "yes" ]; then + if [ ${@is_target(d)} = "yes" ]; then oe_runmake install_vendor fi } cpan_do_stage () { - if [ ${@is_target(d)} == "no" ]; then + if [ ${@is_target(d)} = "no" ]; then oe_runmake install_vendor fi } diff --git a/classes/e.bbclass b/classes/e.bbclass index 84d85f5542..3fb2355bc9 100644 --- a/classes/e.bbclass +++ b/classes/e.bbclass @@ -1,6 +1,7 @@ HOMEPAGE = "http://www.enlightenment.org" SECTION = "e/apps" -SRC_URI = "http://download.enlightenment.org/snapshots/2007-06-17/${PN}-${PV}.tar.gz" +SRC_URI = "${E_CVS};module=e17/apps/${SRCNAME}" +S = "${WORKDIR}/${SRCNAME}" inherit autotools pkgconfig binconfig @@ -9,27 +10,10 @@ do_prepsources () { } addtask prepsources after do_fetch before do_unpack -export CURL_CONFIG = "${STAGING_BINDIR_CROSS}/curl-config" -export EDB_CONFIG = "${STAGING_BINDIR_CROSS}/edb-config" -export EET_CONFIG = "${STAGING_BINDIR_CROSS}/eet-config" -export EVAS_CONFIG = "${STAGING_BINDIR_CROSS}/evas-config" -export ECORE_CONFIG = "${STAGING_BINDIR_CROSS}/ecore-config" -export EMBRYO_CONFIG = "${STAGING_BINDIR_CROSS}/embryo-config" -export ENGRAVE_CONFIG = "${STAGING_BINDIR_CROSS}/engrave-config" -export ENLIGHTENMENT_CONFIG = "${STAGING_BINDIR_CROSS}/enlightenment-config" -export EPSILON_CONFIG = "${STAGING_BINDIR_CROSS}/epsilon-config" -export EPEG_CONFIG = "${STAGING_BINDIR_CROSS}/epeg-config" -export ESMART_CONFIG = "${STAGING_BINDIR_CROSS}/esmart-config" -export FREETYPE_CONFIG = "${STAGING_BINDIR_CROSS}/freetype-config" -export IMLIB2_CONFIG = "${STAGING_BINDIR_CROSS}/imlib2-config" +export CURL_CONFIG = "${STAGING_BINDIR_CROSS}/curl-config" +export FREETYPE_CONFIG = "${STAGING_BINDIR_CROSS}/freetype-config" -#do_compile_prepend() { -# find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:' -# find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:' -#} - -PACKAGES = "${PN}-dbg ${PN}-themes ${PN} ${PN}-dev" -FILES_${PN} += "${libdir}/lib*.so.*" +PACKAGES = "${PN}-dbg ${PN}-themes ${PN} ${PN}-dev ${PN}-lib" +FILES_${PN}-lib = "${libdir}/lib*.so.*" FILES_${PN}-themes = "${datadir}/${PN}/themes ${datadir}/${PN}/data ${datadir}/${PN}/fonts ${datadir}/${PN}/pointers ${datadir}/${PN}/images ${datadir}/${PN}/users ${datadir}/${PN}/images ${datadir}/${PN}/styles" FILES_${PN}-dev += "${includedir} ${libdir}/lib*.so" - diff --git a/classes/efl.bbclass b/classes/efl.bbclass new file mode 100644 index 0000000000..ab73a3cf01 --- /dev/null +++ b/classes/efl.bbclass @@ -0,0 +1,49 @@ +SECTION = "e/libs" +HOMEPAGE = "http://www.enlightenment.org" +LICENSE = "MIT BSD" +SRCNAME = "${@bb.data.getVar('PN', d, 1).replace('-native', '')}" +SRC_URI = "${E_CVS};module=e17/libs/${SRCNAME}" +S = "${WORKDIR}/${SRCNAME}" +DEPENDS += "pkgconfig-native" + +# revision 0d93ec84b30bc1bee2caaee72d667f87bc468a70 made SRCDATE and hence PV go backwards, so we need to up PE to unbreak builds and feeds :( +PE = "1" + +AUTOTOOLS_STAGE_PKGCONFIG = "1" +# do NOT inherit pkgconfig here, see note in autotools_stage_all +inherit autotools + +do_stage() { + autotools_stage_all +} + +PACKAGES = "${PN}-dbg ${PN} ${PN}-themes ${PN}-dev ${PN}-tests" + +FILES_${PN} = "${libdir}/*.so.*" + +FILES_${PN}-themes = "${datadir}/${PN}/themes \ + ${datadir}/${PN}/data \ + ${datadir}/${PN}/fonts \ + ${datadir}/${PN}/pointers \ + ${datadir}/${PN}/images \ + ${datadir}/${PN}/users \ + ${datadir}/${PN}/images \ + ${datadir}/${PN}/styles" + +FILES_${PN}-dev += "${bindir}/${PN}-config \ + ${libdir}/pkgconfig/* \ + ${libdir}/lib*.la \ + ${libdir}/lib*.a \ + ${libdir}/*.so \ + ${libdir}/${PN}/*.a \ + ${libdir}/${PN}/*.la \ + ${libdir}/${PN}/*/*.a \ + ${libdir}/${PN}/*/*.la" + +FILES_${PN}-dbg += "${libdir}/${PN}/.debug \ + ${libdir}/${PN}/*/.debug" + +FILES_${PN}-tests = "${bindir}/${PN} \ + ${bindir}/*_* \ + ${datadir}" + diff --git a/classes/efl_base.bbclass b/classes/efl_base.bbclass deleted file mode 100644 index 023b2edf74..0000000000 --- a/classes/efl_base.bbclass +++ /dev/null @@ -1,14 +0,0 @@ -inherit autotools pkgconfig - -SECTION = "e/libs" -HOMEPAGE = "http://www.enlightenment.org" -SRCNAME = "${@bb.data.getVar('PN', d, 1).replace('-native', '')}" -SRC_URI = "http://download.enlightenment.org/snapshots/2008-01-25/${SRCNAME}-${PV}.tar.gz" -S = "${WORKDIR}/${SRCNAME}-${PV}" - -do_stage() { - autotools_stage_all -} - -PACKAGES = "${PN}-dbg ${PN} ${PN}-themes ${PN}-dev" -FILES_${PN}-dev += "${bindir}/${PN}-config ${libdir}/pkgconfig/* ${libdir}/lib*.?a ${libdir}/lib*.a" diff --git a/classes/efl_library.bbclass b/classes/efl_library.bbclass deleted file mode 100644 index c2b6938e47..0000000000 --- a/classes/efl_library.bbclass +++ /dev/null @@ -1,9 +0,0 @@ -inherit efl_base - -SRC_URI = "${E_CVS};module=e17/libs/${SRCNAME}" -S = "${WORKDIR}/${SRCNAME}" - -PACKAGES =+ "${PN}-tests" -FILES_${PN}-tests = "${bindir}/${PN} ${bindir}/*_* ${datadir}" -FILES_${PN}-dev += "${bindir}/*-config ${libdir}/${PN}/*.a ${libdir}/${PN}/*.la ${libdir}/${PN}/*/*.a ${libdir}/${PN}/*/*.la" -FILES_${PN} = "${libdir}/*.so*" diff --git a/classes/kernel-arch.bbclass b/classes/kernel-arch.bbclass index 5e5d9a94a8..2ce0f9727d 100644 --- a/classes/kernel-arch.bbclass +++ b/classes/kernel-arch.bbclass @@ -30,3 +30,11 @@ def map_kernel_arch(a, d): bb.error("cannot map '%s' to a linux kernel architecture" % a) export ARCH = "${@map_kernel_arch(bb.data.getVar('TARGET_ARCH', d, 1), d)}" + +def map_uboot_arch(a, d): + if a == "powerpc": + return "ppc" + return a + +export UBOOT_ARCH = "${@map_uboot_arch(bb.data.getVar('ARCH', d, 1), d)}" + diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 459c553ffe..90583b42a4 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -3,6 +3,21 @@ inherit linux-kernel-base module_strip PROVIDES += "virtual/kernel" DEPENDS += "virtual/${TARGET_PREFIX}depmod-${@get_kernelmajorversion('${PV}')} virtual/${TARGET_PREFIX}gcc${KERNEL_CCSUFFIX} update-modules" +KERNEL_IMAGETYPE ?= "zImage" + +# Add dependency on mkimage for kernels that build a uImage + +python __anonymous () { + + import bb + + kerneltype = bb.data.getVar('KERNEL_IMAGETYPE', d, 1) or '' + if kerneltype == 'uImage': + depends = bb.data.getVar("DEPENDS", d, 1) + depends = "%s u-boot-mkimage-openmoko-native" % depends + bb.data.setVar("DEPENDS", depends, d) +} + inherit kernel-arch PACKAGES_DYNAMIC += "kernel-module-*" @@ -10,11 +25,6 @@ PACKAGES_DYNAMIC += "kernel-image-*" export OS = "${TARGET_OS}" export CROSS_COMPILE = "${TARGET_PREFIX}" -KERNEL_IMAGETYPE ?= "zImage" -# Base filename under which users see built kernel (i.e. deploy name) -KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}" -# Symlink basename pointing to the most recently built kernel for a machine -KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}" KERNEL_PRIORITY = "${@bb.data.getVar('PV',d,1).split('-')[0].split('.')[-1]}" @@ -51,6 +61,10 @@ KERNEL_LOCALVERSION ?= "" # kernels are generally machine specific PACKAGE_ARCH = "${MACHINE_ARCH}" +# U-Boot support +UBOOT_ENTRYPOINT ?= "20008000" +UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}" + kernel_do_compile() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE oe_runmake include/linux/version.h CC="${KERNEL_CC}" LD="${KERNEL_LD}" @@ -438,13 +452,47 @@ python populate_packages_prepend () { # Support checking the kernel size since some kernels need to reside in partitions # with a fixed length or there is a limit in transferring the kernel to memory do_sizecheck() { - if [ ! -z "${KERNEL_IMAGE_MAXSIZE}" ]; then - size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'` - if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then - rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE} - die "This kernel (size=$size > ${KERNEL_IMAGE_MAXSIZE}) is too big for your device. Please reduce the size of the kernel by making more of it modular." - fi - fi + if [ ! -z "${KERNEL_IMAGE_MAXSIZE}" ]; then + size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'` + if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then + rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE} + die "This kernel (size=$size > ${KERNEL_IMAGE_MAXSIZE}) is too big for your device. Please reduce the size of the kernel by making more of it modular." + fi + fi } addtask sizecheck before do_install after do_compile + +KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}" +KERNEL_IMAGE_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${MACHINE}" + +do_deploy() { + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${PV}-${PR}-${MACHINE}.tgz -C ${D} lib + + if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then + if test -e arch/${ARCH}/boot/compressed/vmlinux ; then + ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin + uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C none -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + rm -f linux.bin + else + ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin + rm -f linux.bin.gz + gzip -9 linux.bin + uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C gzip -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + rm -f linux.bin.gz + fi + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + fi + + cd ${DEPLOY_DIR_IMAGE} + rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.bin + ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${KERNEL_IMAGE_SYMLINK_NAME}.bin + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_SYMLINK_NAME}.bin +} + +do_deploy[dirs] = "${S}" + +addtask deploy before do_package after do_install diff --git a/classes/package.bbclass b/classes/package.bbclass index eb43856c55..814715e1fa 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -904,7 +904,7 @@ python package_depchains() { for suffix in pkgs: for pkg in pkgs[suffix]: (base, func) = pkgs[suffix][pkg] - if suffix == "-dev": + if suffix == "-dev" and not pkg.startswith("kernel-module-"): pkg_adddeprrecs(pkg, base, suffix, func, depends, d) if len(pkgs[suffix]) == 1: pkg_addrrecs(pkg, base, suffix, func, rdepends, d) diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 1c717b415e..bb166cb2f5 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -233,9 +233,15 @@ staging_packager () { echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control echo "Architecture: ${PSTAGE_PKGARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - - ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGPATH} + + # Protect against empty SRC_URI + if [ "${SRC_URI}" != "" ] ; then + echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + else + echo "Source: OpenEmbedded" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + fi + + ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGPATH} ${PSTAGE_INSTALL_CMD} ${PSTAGE_PKG} } @@ -257,10 +263,8 @@ python do_package_stage () { if len(packages) > 0: if bb.data.inherits_class('package_ipk', d): ipkpath = bb.data.getVar('DEPLOY_DIR_IPK', d, True).replace(tmpdir, stagepath) - bb.mkdirhier(ipkpath) if bb.data.inherits_class('package_deb', d): debpath = bb.data.getVar('DEPLOY_DIR_DEB', d, True).replace(tmpdir, stagepath) - bb.mkdirhier(debpath) for pkg in packages: pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1) @@ -279,7 +283,10 @@ python do_package_stage () { srcfile = bb.data.expand("${DEPLOY_DIR_IPK}/" + arch + "/" + srcname, d) if not os.path.exists(srcfile): bb.fatal("Package %s does not exist yet it should" % srcfile) - bb.copyfile(srcfile, ipkpath + "/" + srcname) + destpath = ipkpath + "/" + arch + "/" + bb.mkdirhier(destpath) + bb.copyfile(srcfile, destpath + srcname) + if bb.data.inherits_class('package_deb', d): if arch == 'all': srcname = bb.data.expand(pkgname + "_${PV}-" + pr + "_all.deb", d) @@ -288,7 +295,9 @@ python do_package_stage () { srcfile = bb.data.expand("${DEPLOY_DIR_DEB}/" + arch + "/" + srcname, d) if not os.path.exists(srcfile): bb.fatal("Package %s does not exist yet it should" % srcfile) - bb.copyfile(srcfile, debpath + "/" + srcname) + destpath = debpath + "/" + arch + "/" + bb.mkdirhier(destpath) + bb.copyfile(srcfile, destpath + srcname) # # Handle stamps/ files diff --git a/classes/rootfs_ipk.bbclass b/classes/rootfs_ipk.bbclass index c8e068f739..02c5e691fc 100644 --- a/classes/rootfs_ipk.bbclass +++ b/classes/rootfs_ipk.bbclass @@ -60,6 +60,10 @@ fakeroot rootfs_ipk_do_rootfs () { rm -f ${IMAGE_ROOTFS}${libdir}/opkg/lists/* + # Keep these lines until package manager selection is implemented + ln -s opkg ${IMAGE_ROOTFS}${sysconfdir}/ipkg + ln -s opkg ${IMAGE_ROOTFS}${libdir}/ipkg + ${ROOTFS_POSTPROCESS_COMMAND} log_check rootfs diff --git a/classes/testlab.bbclass b/classes/testlab.bbclass index ba0bc794e7..bb47ee877f 100644 --- a/classes/testlab.bbclass +++ b/classes/testlab.bbclass @@ -32,7 +32,7 @@ if [ -e ${IMAGE_ROOTFS}/etc/opkg ] ; then echo -e "digraph depends {\n node [shape=plaintext]" > ${TESTLAB_DIR}/depends.dot for pkg in $(opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -o ${IMAGE_ROOTFS} list_installed | awk '{print $1}') ; do - opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -o ${IMAGE_ROOTFS} info $pkg | grep Filename | awk -F: '{print $2}' >> ${TESTLAB_DIR}/installed-packages.txt + opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -o ${IMAGE_ROOTFS} info $pkg | awk '/Package/ {printf $2"_"} /Version/ {printf $2"_"} /Archi/ {print $2".ipk"}' >> ${TESTLAB_DIR}/installed-packages.txt for depends in $(opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -o ${IMAGE_ROOTFS} info $pkg | grep Depends) ; do echo "$pkg OPP $depends;" | grep -v "(" | grep -v ")" | grep -v Depends | sed -e 's:,::g' -e 's:-:_:g' -e 's:\.:_:g' -e 's:+::g' |sed 's:OPP:->:g' >> ${TESTLAB_DIR}/depends.dot @@ -57,7 +57,7 @@ if [ -e ${IMAGE_ROOTFS}/etc/opkg ] ; then #dot -Tpng -o ${TESTLAB_DIR}/image-dependencies-nokernel-nolibc-noupdate-nomodules.png ${TESTLAB_DIR}/depends-nokernel-nolibc-noupdate-nomodules.dot for file in $(cat ${TESTLAB_DIR}/installed-packages.txt) ; do - du -k $(find ${DEPLOY_DIR_IPK} -name "$file") + du -k $(find ${DEPLOY_DIR_IPK} -name "$file") | head -n1 done | grep "\.ipk" | sed -e s:${DEPLOY_DIR_IPK}::g | sort -n -r | awk '{print $1 "\tKiB " $2}' > ${TESTLAB_DIR}/installed-package-sizes.txt fi } |