From 7b9de9ebe8559476d3545b733284376892a2bda9 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Wed, 23 Jan 2008 15:29:06 +0000 Subject: kernel-arch.bbclass: x86 is now proper arch in kernel --- classes/kernel-arch.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/kernel-arch.bbclass b/classes/kernel-arch.bbclass index 9208c3507a..b45f3f9696 100644 --- a/classes/kernel-arch.bbclass +++ b/classes/kernel-arch.bbclass @@ -5,7 +5,7 @@ # valid_archs = "alpha cris ia64 \ - x86_64,i386 \ + x86_64,i386 x86 \ m68knommu m68k ppc powerpc ppc64 \ sparc sparc64 \ arm arm26 \ -- cgit v1.2.3 From ea78cc0130bd9106754c72041ee9ec82b7b15431 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Thu, 24 Jan 2008 10:57:32 +0000 Subject: debian.bbclass : altered version of the patch in #3383, this allows us to change the debian renaming of a package without resorting to python in the recipe. Makes recipes cleaner and is overrideable in distros that need different renaming. Original patch from Robert Schuster --- classes/debian.bbclass | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/debian.bbclass b/classes/debian.bbclass index dd0789adae..0afe9fcc39 100644 --- a/classes/debian.bbclass +++ b/classes/debian.bbclass @@ -3,6 +3,9 @@ # before building the current package to make the packages runtime # depends are correct # +# Custom library package names can be defined setting +# DEBIANNAME_ + pkgname to the desired name. +# # Better expressed as ensure all RDEPENDS package before we package # This means we can't have circular RDEPENDS/RRECOMMENDS do_package_write_ipk[rdeptask] = "do_package" @@ -88,7 +91,10 @@ python debian_package_name_hook () { for pkg in packages.split(): if (bb.data.getVar('PKG_' + pkg, d) or bb.data.getVar('DEBIAN_NOAUTONAME_' + pkg, d)): continue - if pkg == orig_pkg: + debian_pn = bb.data.getVar('DEBIANNAME_' + pkg, d) + if debian_pn: + newpkg = debian_pn + elif pkg == orig_pkg: newpkg = pkgname else: newpkg = pkg.replace(orig_pkg, devname, 1) -- cgit v1.2.3 From 2d9c184c9d3b28efdfdbd0c827d6b1fda0d507a7 Mon Sep 17 00:00:00 2001 From: Rolf Leggewie Date: Thu, 24 Jan 2008 17:49:06 +0000 Subject: kernel: add wifi suspend fix to kernel-module-(hostap|orinoco)-cs. Closes 3664. * applies only to kernel later than 2.6.17 * added base_version_less_or_equal function to base.bbclass (thanks, zecke and mickey!) to do the comparison. This does not change existing functionality. Skipped RFC. --- classes/base.bbclass | 8 ++++++++ classes/kernel.bbclass | 2 ++ 2 files changed, 10 insertions(+) (limited to 'classes') diff --git a/classes/base.bbclass b/classes/base.bbclass index d48d2a5726..c8ee75627f 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -128,6 +128,14 @@ def base_less_or_equal(variable, checkvalue, truevalue, falsevalue, d): else: return falsevalue +def base_version_less_or_equal(variable, checkvalue, truevalue, falsevalue, d): + import bb + result = bb.vercmp(bb.data.getVar(variable,d,True), checkvalue) + if result <= 0: + return truevalue + else: + return falsevalue + def base_contains(variable, checkvalues, truevalue, falsevalue, d): import bb matches = 0 diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 8724ad2cf1..047a3ec047 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -180,6 +180,8 @@ FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*" FILES_kernel-dev = "/boot/System.map* /boot/config*" FILES_kernel-vmlinux = "/boot/vmlinux*" RDEPENDS_kernel = "kernel-base" +RRECOMMENDS_kernel-module-hostap-cs += '${@base_version_less_or_equal("KERNEL_VERSION", "2.6.17", "", "apm-wifi-suspendfix", d)}' +RRECOMMENDS_kernel-module-orinoco-cs += '${@base_version_less_or_equal("KERNEL_VERSION", "2.6.17", "", "apm-wifi-suspendfix", d)}' # Allow machines to override this dependency if kernel image files are # not wanted in images as standard RDEPENDS_kernel-base ?= "kernel-image" -- cgit v1.2.3 From c291df04a3913d8559159f82c3b0ffa4dae7de33 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Mon, 28 Jan 2008 00:11:15 +0000 Subject: patch.bbclass: Show full path of a patch. * This is for consistency with existing non-patch fetch message in base.bbclass. Allows to catch pulling file from wrong override dir quickly. --- classes/patch.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/patch.bbclass b/classes/patch.bbclass index 0cc202820f..6f83d9c88b 100644 --- a/classes/patch.bbclass +++ b/classes/patch.bbclass @@ -526,7 +526,7 @@ python patch_do_patch() { bb.note("Patch '%s' applies to earlier revisions" % pname) continue - bb.note("Applying patch '%s'" % pname) + bb.note("Applying patch '%s' (%s)" % (pname, unpacked)) try: patchset.Import({"file":unpacked, "remote":url, "strippath": pnum}, True) except: -- cgit v1.2.3 From f45fd4d5ba65cf4eb6dd795de6953a5ff3dc9dbc Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 28 Jan 2008 23:00:13 +0000 Subject: native.bbclass: Change prefix so its within the build-arch directory, hence moving on step closer to sysroot. Nothing much uses the prefix path from native.bbclass apart from qemu which this change fixes a problem with --- classes/native.bbclass | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'classes') diff --git a/classes/native.bbclass b/classes/native.bbclass index d51c675909..934303cc0c 100644 --- a/classes/native.bbclass +++ b/classes/native.bbclass @@ -49,9 +49,9 @@ export STRIP = "${HOST_PREFIX}strip" # Path prefixes -base_prefix = "${exec_prefix}" -prefix = "${STAGING_DIR}" -exec_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}" +base_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}" +prefix = "${base_prefix}" +exec_prefix = "${base_prefix}" # Base paths base_bindir = "${base_prefix}/bin" -- cgit v1.2.3 From fc98537d1272baf818ed71604e73d7221d49dbf1 Mon Sep 17 00:00:00 2001 From: Rolf Leggewie Date: Tue, 29 Jan 2008 08:34:29 +0000 Subject: qpf-fonts: rename qpf.bbclass to qpf.inc and dependent changes as discussed on ml. Partly closes 2430. --- classes/qpf.bbclass | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 classes/qpf.bbclass (limited to 'classes') diff --git a/classes/qpf.bbclass b/classes/qpf.bbclass deleted file mode 100644 index 67761bd4be..0000000000 --- a/classes/qpf.bbclass +++ /dev/null @@ -1,32 +0,0 @@ -PACKAGE_ARCH = "all" - -do_configure() { - : -} - -do_compile() { - : -} - -pkg_postinst_fonts() { -. /etc/profile -${sbindir}/update-qtfontdir -} - -pkg_postrm_fonts() { -. /etc/profile -${sbindir}/update-qtfontdir -f -} - -python populate_packages_prepend() { - postinst = bb.data.getVar('pkg_postinst_fonts', d, 1) - postrm = bb.data.getVar('pkg_postrm_fonts', d, 1) - fontdir = bb.data.getVar('palmtopdir', d, 1) + '/lib/fonts' - pkgregex = "^([a-z-]*_[0-9]*).*.qpf$" - pkgpattern = bb.data.getVar('QPF_PKGPATTERN', d, 1) or 'qpf-%s' - pkgdescription = bb.data.getVar('QPF_DESCRIPTION', d, 1) or 'QPF font %s' - - do_split_packages(d, root=fontdir, file_regex=pkgregex, output_pattern=pkgpattern, - description=pkgdescription, postinst=postinst, postrm=postrm, recursive=True, hook=None, - extra_depends='qpf-font-common') -} -- cgit v1.2.3 From 93ec531fc6350057fd4503c2d3d45b9164f5700a Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Tue, 29 Jan 2008 20:59:20 +0000 Subject: efl: update to 20080129, fix some LICENSE entries, enable software-x11-16 engine again --- classes/efl_base.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/efl_base.bbclass b/classes/efl_base.bbclass index 3865441779..023b2edf74 100644 --- a/classes/efl_base.bbclass +++ b/classes/efl_base.bbclass @@ -3,7 +3,7 @@ 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/2007-07-10/${SRCNAME}-${PV}.tar.gz" +SRC_URI = "http://download.enlightenment.org/snapshots/2008-01-25/${SRCNAME}-${PV}.tar.gz" S = "${WORKDIR}/${SRCNAME}-${PV}" do_stage() { -- cgit v1.2.3 From bc42f026c7487d8336f3ccaefa6d9776d161e4eb Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Fri, 8 Feb 2008 15:36:43 +0000 Subject: bootimg.bbclass: add deploy image dir, insert chance for post processing image. closes #1263 --- classes/bootimg.bbclass | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'classes') diff --git a/classes/bootimg.bbclass b/classes/bootimg.bbclass index 0c96001096..d58cf1f424 100644 --- a/classes/bootimg.bbclass +++ b/classes/bootimg.bbclass @@ -13,9 +13,9 @@ # ${SYSLINUX_OPTS} - additional options to add to the syslinux file ';' delimited do_bootimg[depends] += "dosfstools-native:do_populate_staging \ - syslinux-native:do_populate_staging \ - mtools-native:do_populate_staging \ - cdrtools-native:do_populate_staging" + syslinux-native:do_populate_staging \ + mtools-native:do_populate_staging \ + cdrtools-native:do_populate_staging" PACKAGES = " " @@ -31,6 +31,8 @@ SYSLINUXCFG = "${HDDDIR}/syslinux.cfg" SYSLINUXMENU = "${HDDDIR}/menu" inherit syslinux + +IMAGE_POSTPROCESS_COMMAND ?= "" build_boot_bin() { install -d ${HDDDIR} @@ -49,13 +51,15 @@ build_boot_bin() { BLOCKS=`du -bks ${HDDDIR} | cut -f 1` SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}` + install -d ${DEPLOY_DIR_IMAGE} + mkdosfs -F 12 -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \ -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg - #Create an ISO if we have an INITRD + # Create an ISO if we have an INITRD if [ -n "${INITRD}" ] && [ -s "${INITRD}" ] && [ "${NOISO}" != "1" ] ; then install -d ${ISODIR} @@ -78,6 +82,8 @@ build_boot_bin() { cp ${STAGING_DATADIR_NATIVE}/syslinux/isolinux.bin \ ${ISODIR} + ${IMAGE_POSTPROCESS_COMMAND} + mkisofs -V ${BOOTIMG_VOLUME_ID} \ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ -b isolinux/isolinux.bin -c isolinux/boot.cat -r \ -- cgit v1.2.3 From 00658edbf96bc2e5e25cd645606a7a14db7b9046 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Sat, 9 Feb 2008 02:39:20 +0000 Subject: java.bbclass: Added function to generate very simple wrapper scripts. --- classes/java.bbclass | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'classes') diff --git a/classes/java.bbclass b/classes/java.bbclass index 7fa6dc1786..41d52fe425 100644 --- a/classes/java.bbclass +++ b/classes/java.bbclass @@ -60,3 +60,63 @@ oe_jarinstall() { shift done } + +# Creates a simple wrapper script for your Java program. +# The script is written to ${PN} by default. +# +# Parameters are as follows: +# [options]
[jar files ...] +# +# Options are +# -o where name is the output file name +# +# It can only take jar files from ${datadir_java}! +oe_java_simple_wrapper() { + delimiter= + mainclass= + classpath= + output=${PN} + + while [ "$#" -gt 0 ]; do + case "$1" in + -o) + shift + output=$1 + ;; + -*) + oefatal "oe_java_simple_wrapper: unknown option: $1" + ;; + *) + if [ $mainclass ] + then + classpath=$classpath$delimiter${datadir_java}/$1 + delimiter=":" + else + mainclass=$1 + fi + ;; + esac + shift + done + + oenote "Creating simple Java wrapper script" + oenote "Output File: $output" + oenote "Main Class: $mainclass" + oenote "Classpath: $classpath" + + echo "#!/bin/sh" > $output + echo "# This file is autogenerated by the oe_java_simple_wrapper function of OpenEmbedded" >> $output + echo >> $output + echo "# You can provide additional VM arguments by setting the VMARGS environment variable." >> $output + echo "CLASSPATH_ARG=\"-cp $classpath\"" >> $output + echo >> $output + echo "MAIN_CLASS=$mainclass" >> $output + echo >> $output + echo "# Allows overriding the VM by setting the JAVA environment variable." >> $output + echo "if [ x\${JAVA} = x ]" >> $output + echo "then" >> $output + echo " JAVA=java" >> $output + echo "fi" >> $output + echo >> $output + echo "exec \${JAVA} \${VMARGS} \${CLASSPATH_ARG} \${MAIN_CLASS} \${@}" >> $output +} -- cgit v1.2.3 From b9e4b25300b451df273a4d64aef4530b8ec18fbc Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Tue, 12 Feb 2008 17:56:42 +0000 Subject: bitbake.conf, image.bbclass: Add and use USERDISTRO var to preserve original DISTRO value. * Some distros override DISTRO var to hack overrides right, etc. Yet, original value may be needed sometimes. For example, bbimage expects DISTRO to be what user set/passed it, not something else. * TODO: After interim cleanup during preparation of this patch, it turns out that angstrom is the only distro to (ab)use DISTRO overriding. It may make sense to instead get its OVERRIDES value right. --- classes/image.bbclass | 1 + 1 file changed, 1 insertion(+) (limited to 'classes') diff --git a/classes/image.bbclass b/classes/image.bbclass index ca9c9458e1..d70cfa5daf 100644 --- a/classes/image.bbclass +++ b/classes/image.bbclass @@ -90,6 +90,7 @@ fakeroot do_rootfs () { ${IMAGE_PREPROCESS_COMMAND} export TOPDIR=${TOPDIR} + export DISTRO=${USERDISTRO} export MACHINE=${MACHINE} for type in ${IMAGE_FSTYPES}; do -- cgit v1.2.3 From 8d0d4e75d147f819f4ddedcb888e66650d90d61b Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Fri, 15 Feb 2008 00:56:33 +0000 Subject: image.bbclass: Add deploy_to task * A standalone task to deploy built image to the location specified by DEPLOY_TO variable (likely passed via environment). Assumes ${IMAGE_FSTYPES} is a single value! --- classes/image.bbclass | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'classes') diff --git a/classes/image.bbclass b/classes/image.bbclass index d70cfa5daf..e8fca61fb2 100644 --- a/classes/image.bbclass +++ b/classes/image.bbclass @@ -110,6 +110,14 @@ fakeroot do_rootfs () { ${MACHINE_POSTPROCESS_COMMAND} } +do_deploy_to[nostamp] = "1" +do_deploy_to () { + # A standalone task to deploy built image to the location specified + # by DEPLOY_TO variable (likely passed via environment). + # Assumes ${IMAGE_FSTYPES} is a single value! + cp "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.${IMAGE_FSTYPES}" ${DEPLOY_TO} +} + insert_feed_uris () { echo "Building feeds for [${DISTRO}].." @@ -202,3 +210,4 @@ rootfs_update_timestamp () { EXPORT_FUNCTIONS zap_root_password create_etc_timestamp remove_init_link do_rootfs make_zimage_symlink_relative set_image_autologin rootfs_update_timestamp addtask rootfs before do_build after do_install +addtask deploy_to after do_rootfs -- cgit v1.2.3 From 72761e468bb3e905459f2b81ce1bc4d80419481f Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Fri, 15 Feb 2008 15:38:05 +0000 Subject: kernel.bbclass: Add satndalone task "builtin_initramfs". * Builds a zImage with linked in initramfs specified by INITRAMFS_LOC param. --- classes/kernel.bbclass | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'classes') diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 047a3ec047..28e04ea204 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -11,6 +11,10 @@ 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]}" @@ -30,6 +34,7 @@ HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}" KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX} ${HOST_CC_KERNEL_ARCH}" KERNEL_LD = "${LD}${KERNEL_LDSUFFIX} ${HOST_LD_KERNEL_ARCH}" +# Where built kernel lies in the kernel tree KERNEL_OUTPUT = "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}" KERNEL_IMAGEDEST = "boot" @@ -60,6 +65,22 @@ kernel_do_compile() { fi } +do_builtin_initramfs() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE + cp "${INITRAMFS_LOC}" usr/initramfs_data.cpio.gz + oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" + install -d ${DEPLOY_DIR_IMAGE} + mv ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.no-initramfs.bin + install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + # Make sure to kill injected initramfs, in case someone will do "-c compile -f" + rm usr/initramfs_data.cpio.gz + + [ -n "${DEPLOY_TO}" ] && install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_TO} +} +addtask builtin_initramfs after do_compile +# As it accepts external parameter(s), better make it unstamped +do_builtin_initramfs[nostamp] = "1" + kernel_do_stage() { ASMDIR=`readlink include/asm` -- cgit v1.2.3 From b7b7b8ba477be3f471d96ce473a55fcfaf24917b Mon Sep 17 00:00:00 2001 From: Leon Woestenberg Date: Sat, 16 Feb 2008 20:06:08 +0000 Subject: image.bbclass: Innocent typo fix. --- classes/image.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'classes') diff --git a/classes/image.bbclass b/classes/image.bbclass index e8fca61fb2..67a3a4fa10 100644 --- a/classes/image.bbclass +++ b/classes/image.bbclass @@ -35,9 +35,9 @@ python () { } # -# Get a list of files containing device tables to create. +# Get a list of files containing tables of devices to be created. # * IMAGE_DEVICE_TABLE is the old name to an absolute path to a device table file -# * IMAGE_DEVICE_TABLES is a new name for a file, or list of files, seached +# * IMAGE_DEVICE_TABLES is a new name for a file, or list of files, searched # for in the BBPATH # If neither are specified then the default name of files/device_table-minimal.txt # is searched for in the BBPATH (same as the old version.) -- cgit v1.2.3 From 456ba7ffd159821e86ad7ad4b66ec7d5790bd054 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 17 Feb 2008 13:56:40 +0000 Subject: classes/kernel.bbclass: Remove usage of non-standard variables (DEPLOY_TO) and random renaming of output. --- classes/kernel.bbclass | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'classes') diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 28e04ea204..6c12004dad 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -65,21 +65,21 @@ kernel_do_compile() { fi } +INITRAMFS_SYMLINK_NAME ?= "initramfs-${MACHINE}" +INITRAMFS_IMAGE_TARGET ?= "initramfs-image" + do_builtin_initramfs() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE - cp "${INITRAMFS_LOC}" usr/initramfs_data.cpio.gz + cp "${DEPLOY_DIR_IMAME}/${INITRAMFS_SYMLINK_NAME}" usr/initramfs_data.cpio.gz oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" install -d ${DEPLOY_DIR_IMAGE} - mv ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.no-initramfs.bin - install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin + install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-initramfs.bin # Make sure to kill injected initramfs, in case someone will do "-c compile -f" rm usr/initramfs_data.cpio.gz - - [ -n "${DEPLOY_TO}" ] && install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_TO} } addtask builtin_initramfs after do_compile -# As it accepts external parameter(s), better make it unstamped do_builtin_initramfs[nostamp] = "1" +do_builtin_initramfs[depends] = "${INITRAMFS_IMAGE_TARGET}:do_rootfs" kernel_do_stage() { ASMDIR=`readlink include/asm` -- cgit v1.2.3 From 7904f3397095b3b1d8b7eb96a10c455019a1e71b Mon Sep 17 00:00:00 2001 From: Jeremy Laine Date: Tue, 19 Feb 2008 09:26:36 +0000 Subject: classes/kernel.bbclass: fix staging for x86 on kernels >= 2.6.24 --- classes/kernel.bbclass | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'classes') diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index 6c12004dad..1e325323df 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -128,6 +128,10 @@ kernel_do_stage() { if [ -e arch/${ARCH}/Makefile ]; then install -d ${STAGING_KERNEL_DIR}/arch/${ARCH} install -m 0644 arch/${ARCH}/Makefile* ${STAGING_KERNEL_DIR}/arch/${ARCH} + # Otherwise check arch/x86/Makefile for i386 and x86_64 on kernels >= 2.6.24 + elif [ -e arch/x86/Makefile ]; then + install -d ${STAGING_KERNEL_DIR}/arch/x86 + install -m 0644 arch/x86/Makefile* ${STAGING_KERNEL_DIR}/arch/x86 fi cp -fR include/config* ${STAGING_KERNEL_DIR}/include/ install -m 0644 ${KERNEL_OUTPUT} ${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE} -- cgit v1.2.3 From 23db6097b2e40cae71bb936c9165f403dc43be2a Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 19 Feb 2008 11:54:37 +0000 Subject: package.bbclass: Drop unneeded copyfile function since we can use the version from bitbake now --- classes/package.bbclass | 72 +------------------------------------------------ 1 file changed, 1 insertion(+), 71 deletions(-) (limited to 'classes') diff --git a/classes/package.bbclass b/classes/package.bbclass index ec8c3d97e2..e14349a9e5 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -291,76 +291,6 @@ python package_do_split_locales() { #bb.data.setVar('RDEPENDS_%s' % mainpkg, ' '.join(rdep), d) } -def copyfile(src,dest,newmtime=None,sstat=None): - """ - Copies a file from src to dest, preserving all permissions and - attributes; mtime will be preserved even when moving across - filesystems. Returns true on success and false on failure. - """ - import os, stat, shutil, commands - - #print "copyfile("+src+","+dest+","+str(newmtime)+","+str(sstat)+")" - try: - if not sstat: - sstat=os.lstat(src) - except Exception, e: - print "copyfile: Stating source file failed...", e - return False - - destexists=1 - try: - dstat=os.lstat(dest) - except: - dstat=os.lstat(os.path.dirname(dest)) - destexists=0 - - if destexists: - if stat.S_ISLNK(dstat[stat.ST_MODE]): - try: - os.unlink(dest) - destexists=0 - except Exception, e: - pass - - if stat.S_ISLNK(sstat[stat.ST_MODE]): - try: - target=os.readlink(src) - if destexists and not stat.S_ISDIR(dstat[stat.ST_MODE]): - os.unlink(dest) - os.symlink(target,dest) - #os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID]) - return os.lstat(dest) - except Exception, e: - print "copyfile: failed to properly create symlink:", dest, "->", target, e - return False - - if stat.S_ISREG(sstat[stat.ST_MODE]): - try: # For safety copy then move it over. - shutil.copyfile(src,dest+"#new") - os.rename(dest+"#new",dest) - except Exception, e: - print 'copyfile: copy', src, '->', dest, 'failed.', e - return False - else: - #we don't yet handle special, so we need to fall back to /bin/mv - a=commands.getstatusoutput("/bin/cp -f "+"'"+src+"' '"+dest+"'") - if a[0]!=0: - print "copyfile: Failed to copy special file:" + src + "' to '" + dest + "'", a - return False # failure - try: - os.lchown(dest,sstat[stat.ST_UID],sstat[stat.ST_GID]) - os.chmod(dest, stat.S_IMODE(sstat[stat.ST_MODE])) # Sticky is reset on chown - except Exception, e: - print "copyfile: Failed to chown/chmod/unlink", dest, e - return False - - if newmtime: - os.utime(dest,(newmtime,newmtime)) - else: - os.utime(dest, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME])) - newmtime=sstat[stat.ST_MTIME] - return newmtime - python populate_packages () { import glob, stat, errno, re @@ -462,7 +392,7 @@ python populate_packages () { fpath = os.path.join(root,file) dpath = os.path.dirname(fpath) bb.mkdirhier(dpath) - ret = copyfile(file, fpath) + ret = bb.copyfile(file, fpath) if ret is False or ret == 0: raise bb.build.FuncFailed("File population failed") del localdata -- cgit v1.2.3 From d56c0688ea805c88d94afad341cf074060b61c16 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 19 Feb 2008 11:59:30 +0000 Subject: package_ipk.bbclass/package_deb.bbclass: Use bitbake locking functions --- classes/package_deb.bbclass | 22 +++++++++------------- classes/package_ipk.bbclass | 28 +++++++++------------------- 2 files changed, 18 insertions(+), 32 deletions(-) (limited to 'classes') diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass index b85ffe254f..c550c2fbff 100644 --- a/classes/package_deb.bbclass +++ b/classes/package_deb.bbclass @@ -69,7 +69,7 @@ python do_package_deb_install () { } python do_package_deb () { - import sys, re, fcntl, copy + import sys, re, copy workdir = bb.data.getVar('WORKDIR', d, 1) if not workdir: @@ -102,20 +102,11 @@ python do_package_deb () { bb.debug(1, "No packages; nothing to do") return - def lockfile(name): - lf = open(name, "a+") - fcntl.flock(lf.fileno(), fcntl.LOCK_EX) - return lf - - def unlockfile(lf): - fcntl.flock(lf.fileno(), fcntl.LOCK_UN) - lf.close - for pkg in packages.split(): localdata = bb.data.createCopy(d) root = "%s/install/%s" % (workdir, pkg) - lf = lockfile(root + ".lock") + lf = bb.utils.lockfile(root + ".lock") bb.data.setVar('ROOT', '', localdata) bb.data.setVar('ROOT_%s' % pkg, root, localdata) @@ -147,7 +138,7 @@ python do_package_deb () { if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1": from bb import note note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1))) - unlockfile(lf) + bb.utils.unlockfile(lf) continue controldir = os.path.join(root, 'DEBIAN') @@ -158,6 +149,7 @@ python do_package_deb () { # import codecs # ctrlfile = codecs.open("someFile", "w", "utf-8") except OSError: + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("unable to open control file for writing.") fields = [] @@ -196,6 +188,7 @@ python do_package_deb () { ctrlfile.write(unicode(c % tuple(pullData(fs, localdata)))) except KeyError: (type, value, traceback) = sys.exc_info() + bb.utils.unlockfile(lf) ctrlfile.close() raise bb.build.FuncFailed("Missing field for deb generation: %s" % value) # more fields @@ -231,6 +224,7 @@ python do_package_deb () { try: scriptfile = file(os.path.join(controldir, script), 'w') except OSError: + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("unable to open %s script file for writing." % script) scriptfile.write("#!/bin/sh\n") scriptfile.write(scriptvar) @@ -242,6 +236,7 @@ python do_package_deb () { try: conffiles = file(os.path.join(controldir, 'conffiles'), 'w') except OSError: + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("unable to open conffiles for writing.") for f in conffiles_str.split(): conffiles.write('%s\n' % f) @@ -250,6 +245,7 @@ python do_package_deb () { os.chdir(basedir) ret = os.system("PATH=\"%s\" fakeroot dpkg-deb -b %s %s" % (bb.data.getVar("PATH", localdata, 1), root, pkgoutdir)) if ret != 0: + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("dpkg-deb execution failed") for script in ["preinst", "postinst", "prerm", "postrm", "control" ]: @@ -263,7 +259,7 @@ python do_package_deb () { except OSError: pass - unlockfile(lf) + bb.utils.unlockfile(lf) } python () { diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass index 087bbcbfb4..57fcaa763f 100644 --- a/classes/package_ipk.bbclass +++ b/classes/package_ipk.bbclass @@ -114,7 +114,7 @@ package_generate_ipkg_conf () { } python do_package_ipk () { - import sys, re, copy, fcntl + import sys, re, copy workdir = bb.data.getVar('WORKDIR', d, 1) if not workdir: @@ -147,22 +147,12 @@ python do_package_ipk () { bb.debug(1, "No packages; nothing to do") return - def lockfile(name): - lf = open(name, "a+") - fcntl.flock(lf.fileno(), fcntl.LOCK_EX) - return lf - - def unlockfile(lf): - fcntl.flock(lf.fileno(), fcntl.LOCK_UN) - lf.close - - for pkg in packages.split(): localdata = bb.data.createCopy(d) pkgdest = bb.data.getVar('PKGDEST', d, 1) root = "%s/%s" % (pkgdest, pkg) - lf = lockfile(root + ".lock") + lf = bb.utils.lockfile(root + ".lock") bb.data.setVar('ROOT', '', localdata) bb.data.setVar('ROOT_%s' % pkg, root, localdata) @@ -193,7 +183,7 @@ python do_package_ipk () { if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1": from bb import note note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1))) - unlockfile(lf) + bb.utils.unlockfile(lf) continue controldir = os.path.join(root, 'CONTROL') @@ -201,7 +191,7 @@ python do_package_ipk () { try: ctrlfile = file(os.path.join(controldir, 'control'), 'w') except OSError: - unlockfile(lf) + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("unable to open control file for writing.") fields = [] @@ -235,7 +225,7 @@ python do_package_ipk () { except KeyError: (type, value, traceback) = sys.exc_info() ctrlfile.close() - unlockfile(lf) + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("Missing field for ipk generation: %s" % value) # more fields @@ -272,7 +262,7 @@ python do_package_ipk () { try: scriptfile = file(os.path.join(controldir, script), 'w') except OSError: - unlockfile(lf) + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("unable to open %s script file for writing." % script) scriptfile.write(scriptvar) scriptfile.close() @@ -283,7 +273,7 @@ python do_package_ipk () { try: conffiles = file(os.path.join(controldir, 'conffiles'), 'w') except OSError: - unlockfile(lf) + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("unable to open conffiles for writing.") for f in conffiles_str.split(): conffiles.write('%s\n' % f) @@ -293,7 +283,7 @@ python do_package_ipk () { ret = os.system("PATH=\"%s\" %s %s %s" % (bb.data.getVar("PATH", localdata, 1), bb.data.getVar("IPKGBUILDCMD",d,1), pkg, pkgoutdir)) if ret != 0: - unlockfile(lf) + bb.utils.unlockfile(lf) raise bb.build.FuncFailed("ipkg-build execution failed") for script in ["preinst", "postinst", "prerm", "postrm", "control" ]: @@ -306,7 +296,7 @@ python do_package_ipk () { os.rmdir(controldir) except OSError: pass - unlockfile(lf) + bb.utils.unlockfile(lf) } python () { -- cgit v1.2.3 From 695ca19882ed557a40fd39c9d5252af105190eac Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 19 Feb 2008 12:08:38 +0000 Subject: packaged-staging.bbclass: Remove older version and replace with improved version --- classes/packaged-staging.bbclass | 389 +++++++++++++++++++------------------- classes/packaged-staging2.bbclass | 229 ---------------------- 2 files changed, 195 insertions(+), 423 deletions(-) delete mode 100644 classes/packaged-staging2.bbclass (limited to 'classes') diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 4b4ebb58bf..29ce72d65c 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -1,228 +1,229 @@ # -# Populated ${STAGING} using packages +# Populate builds using prebuilt packages where possible to speed up builds +# and allow staging to be reconstructed. # # To use it add that line to conf/local.conf: # -# INHERIT += "packaged-staging" -# -# You also need ipkg-cl and ipkg-make-index installed on your host -# put ipkg-build from org.openembedded.packaged-staging/contrib/ in your $PATH - -# BUGS: -# * does not distinguish between -native, -cross and other packages - -# TODO: -# * also build a feed for native and cross packages -# * make package detection a bit smarter (search for compatible archs) -# * make do_clean clean staging as well - -# Summary: -# This class will have two modes of operation: -# PSTAGE_MODE = 'repopulate': repopulated staging from scratch for each packages -# PSTAGE_MODE = 'append': append each package to staging (current behaviour) - -inherit package +# INHERIT = "packaged-staging" + +python () { + import bb + if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('image', d) and not bb.data.inherits_class('cross', d) and not bb.data.inherits_class('sdk', d): + deps = bb.data.getVarFlag('do_populate_staging', 'depends', d) or "" + deps += " stagemanager-native:do_populate_staging" + bb.data.setVarFlag('do_populate_staging', 'depends', deps, d) + + deps = bb.data.getVarFlag('do_prepackaged_stage', 'depends', d) or "" + deps += " ipkg-native:do_populate_staging ipkg-utils-native:do_populate_staging" + bb.data.setVarFlag('do_prepackaged_stage', 'depends', deps, d) + else: + bb.data.setVar("PSTAGING_DISABLED", "1", d) +} -DEPENDS = "stagemanager-native" +export PSTAGING_DISABLED = "0" DEPLOY_DIR_PSTAGE = "${DEPLOY_DIR}/pstage" PSTAGE_BUILD_CMD = "${IPKGBUILDCMD}" -PSTAGE_INSTALL_CMD = "ipkg-cl install -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg.conf -o " -PSTAGE_UPDATE_CMD = "ipkg-cl update -f ${DEPLOY_DIR_PSTAGE}/ipkg.conf -o " -PSTAGE_LIST_CMD = "ipkg-cl list_installed -f ${DEPLOY_DIR_PSTAGE}/ipkg.conf -o " -PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${PACKAGE_ARCH}.ipk" -PCROSS_PKGNAME = "cross-${PN}_${PV}-${PR}_${BUILD_ARCH}.ipk" - -SPAWNFILE = "${STAGING_DIR}/pkgmaps/${P}-${PR}.spawn" -SPAWNIPK = "${spawn}" - -PSTAGE_TMPDIR_STAGE = "${TMPDIR}/tmp-staging" -PSTAGE_TMPDIR_CROSS = "${TMPDIR}/tmp-cross" - -STAGING_BASEDIR = "${STAGING_LIBDIR}/.." - -PACKAGEFUNCS += "do_write_ipk_list" - -python do_write_ipk_list () { - import os, sys - ipkdir = bb.data.getVar('DEPLOY_DIR_IPK', d, 1) - stagingdir = bb.data.getVar('STAGING_DIR', d, 1) - tmpdir = bb.data.getVar('TMPDIR', d, 1) - p = bb.data.getVar('P', d, 1) - pr = bb.data.getVar('PR', d, 1) - - packages = bb.data.getVar('PACKAGES', d, 1) - if not packages: - bb.debug(1, "PACKAGES not defined, nothing to package") - return - - if packages == []: - bb.debug(1, "No packages; nothing to do") - return - - # Generate ipk.conf if it or the stamp doesnt exist - listfile = os.path.join(stagingdir,"pkgmaps","%s-%s.spawn" % ( p , pr )) - os.system('mkdir -p ' + stagingdir + '/pkgmaps') - if not os.access(listfile, os.R_OK): - os.system('rm -f ' + listfile) - f = open(listfile,"w") - for spawn in packages.split(): - #check if the packagename has changed due to debian shlib renaming - localdata = bb.data.createCopy(d) - pkgname = bb.data.getVar('PKG_%s' % spawn, localdata, 1) - if not pkgname: - pkgname = spawn - f.write("%s\n" % pkgname) - f.close() -} +PSTAGE_INSTALL_CMD = "ipkg-cl install -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" +PSTAGE_UPDATE_CMD = "ipkg-cl update -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" +PSTAGE_REMOVE_CMD = "ipkg-cl remove -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" +PSTAGE_LIST_CMD = "ipkg-cl list_installed -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" +PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${MULTIMACH_ARCH}.ipk" +PSTAGE_TMPDIR_STAGE = "${WORKDIR}/staging-pkg" do_clean_append() { - """clear the build and temp directories""" + """ + Clear the build and temp directories + """ + bb.note("Uninstalling package from staging...") + path = bb.data.getVar("PATH", d, 1) + removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1) + removepkg = bb.data.expand("staging-${PN}", d) + ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg)) + if ret != 0: + bb.note("Failure removing staging package") + stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d) - if stagepkg == '//': raise bb.build.FuncFailed("wrong DATADIR") - bb.note("removing " + stagepkg) - os.system('rm -rf ' + stagepkg) + bb.note("Removing staging package %s" % stagepkg) + #os.system('rm -rf ' + stagepkg) } - -do_stage_prepend() { - - stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/staging-stamp-cache -u - - stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/cross-stamp-cache -u - - if [ ! -e ${STAGING_BASEDIR} ]; then - mkdir -p ${STAGING_BASEDIR} - fi - - if [ ! -e ${DEPLOY_DIR_PSTAGE} ]; then - mkdir -p ${DEPLOY_DIR_PSTAGE} - fi - - if [ -e ${STAGING_BASEDIR}/usr ]; then - oenote "${STAGING_BASEDIR}/usr already present, leaving it alone" - else - oenote "${STAGING_BASEDIR}/usr not present, symlinking it" - ln -s ${STAGING_BASEDIR}/ ${STAGING_BASEDIR}/usr - fi - +staging_helper () { #assemble appropriate ipkg.conf - if [ -e ${DEPLOY_DIR_PSTAGE}/ipkg.conf ]; then - rm ${DEPLOY_DIR_PSTAGE}/ipkg.conf + conffile=${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf + mkdir -p ${DEPLOY_DIR_PSTAGE}/pstaging_lists + if [ ! -e $conffile ]; then + ipkgarchs="${BUILD_ARCH} all any noarch ${TARGET_ARCH} ${PACKAGE_ARCHS} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}" + priority=1 + for arch in $ipkgarchs; do + echo "arch $arch $priority" >> $conffile + priority=$(expr $priority + 5) + done + echo "src oe-staging file:${DEPLOY_DIR_PSTAGE}" >> $conffile + + OLD_PWD=`pwd` + cd ${DEPLOY_DIR_PSTAGE} + ipkg-make-index -p Packages . + cd ${OLD_PWD} + + ${PSTAGE_UPDATE_CMD} fi +} - ipkgarchs="${BUILD_ARCH} all any noarch ${TARGET_ARCH} ${PACKAGE_ARCHS} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}" - priority=1 - for arch in $ipkgarchs; do - echo "arch $arch $priority" >> ${DEPLOY_DIR_PSTAGE}/ipkg.conf - priority=$(expr $priority + 5) - done - echo "src oe file:${DEPLOY_DIR_IPK}" >> ${DEPLOY_DIR_PSTAGE}/ipkg.conf - export OLD_PWD=`pwd` - cd ${DEPLOY_DIR_IPK} && rm *${BUILD_ARCH}.ipk -f ; ipkg-make-index -p Packages . ; cd ${OLD_PWD} - ${PSTAGE_UPDATE_CMD} ${STAGING_BASEDIR} - - #check for generated packages - if [ -e ${SPAWNFILE} ]; then - oenote "List of spawned packages found: ${P}.spawn" - for spawn in `cat ${SPAWNFILE} | grep -v locale | grep -v dbg | grep -v gconv | grep -v charmap` ; do \ - if [ -e ${DEPLOY_DIR_IPK}/${spawn}_* ]; then - ${PSTAGE_INSTALL_CMD} ${STAGING_BASEDIR} ${spawn} - # clean up .la files to avoid having references to the builddirs in the binaries - for lafile in ${STAGING_LIBDIR}/*.la ; do \ - sed -i s:installed=yes:installed=no:g ${lafile} || true - done - - #fix up linker script to poin to staging - if [ -e ${STAGING_LIBDIR}/libc.so ]; then - sed -i s:\ /lib:\ ${STAGING_LIBDIR}:g ${STAGING_LIBDIR}/libc.so - sed -i s:\ /usr/lib:\ ${STAGING_LIBDIR}:g ${STAGING_LIBDIR}/libc.so - fi - else - oenote "${spawn} not found, probably empty package" - fi - done - exit 0 - else - oenote "Spawn file not found!" - fi +python do_prepackaged_stage () { + import os + + if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1": + bb.build.make_stamp("do_prepackaged_stage", d) + return + + bb.note("Uninstalling any existing package from staging...") + path = bb.data.getVar("PATH", d, 1) + removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1) + removepkg = bb.data.expand("staging-${PN}", d) + lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d)) + ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg)) + bb.utils.unlockfile(lf) + if ret != 0: + bb.note("Failure attempting to remove staging package") + + stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d) + + if os.path.exists(stagepkg): + bb.note("Following speedup\n") + path = bb.data.getVar("PATH", d, 1) + installcmd = bb.data.getVar("PSTAGE_INSTALL_CMD", d, 1) + + bb.build.exec_func("staging_helper", d) + + bb.debug(1, "Staging stuff already packaged, using that instead") + lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d)) + ret = os.system("PATH=\"%s\" %s %s" % (path, installcmd, stagepkg)) + bb.utils.unlockfile(lf) + if ret != 0: + bb.note("Failure installing prestage package") + + bb.build.make_stamp("do_prepackaged_stage", d) + bb.build.make_stamp("do_fetch", d) + bb.build.make_stamp("do_unpack", d) + bb.build.make_stamp("do_munge", d) + bb.build.make_stamp("do_patch", d) + bb.build.make_stamp("do_configure", d) + bb.build.make_stamp("do_qa_configure", d) + bb.build.make_stamp("do_rig_locales", d) + bb.build.make_stamp("do_compile", d) + bb.build.make_stamp("do_install", d) + bb.build.make_stamp("do_deploy", d) + bb.build.make_stamp("do_package", d) + bb.build.make_stamp("do_populate_staging", d) + bb.build.make_stamp("do_package_write_deb", d) + bb.build.make_stamp("do_package_write_ipk", d) + bb.build.make_stamp("do_package_write", d) + bb.build.make_stamp("do_package_stage", d) + bb.build.make_stamp("do_qa_staging", d) + + else: + bb.build.make_stamp("do_prepackaged_stage", d) +} +do_prepackaged_stage[cleandirs] = "${PSTAGE_TMPDIR_STAGE}" +do_prepackaged_stage[selfstamp] = "1" +addtask prepackaged_stage before do_fetch - if [ -e ${DEPLOY_DIR_PSTAGE}/${PCROSS_PKGNAME} ]; then - oenote "Cross stuff already packaged, using that instead" - ${PSTAGE_INSTALL_CMD} ${CROSS_DIR} ${DEPLOY_DIR_PSTAGE}/${PCROSS_PKGNAME} - fi +populate_staging_preamble () { + if [ "$PSTAGING_DISABLED" != "1" ]; then + #mkdir -p ${DEPLOY_DIR_PSTAGE} - if [ -e ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME} ]; then - oenote "Staging stuff already packaged, using that instead" - ${PSTAGE_INSTALL_CMD} ${STAGING_DIR} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME} - exit 0 + stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u + stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u fi - - - mkdir -p ${STAGING_BINDIR} - mkdir -p ${STAGING_LIBDIR} - mkdir -p ${STAGING_INCDIR} - mkdir -p ${STAGING_DATADIR}/aclocal } -do_stage_append() { +populate_staging_postamble () { + if [ "$PSTAGING_DISABLED" != "1" ]; then + # list the packages currently installed in staging + ${PSTAGE_LIST_CMD} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-list - mkdir -p ${DEPLOY_DIR_PSTAGE} + set +e + stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u -d ${PSTAGE_TMPDIR_STAGE}/staging + stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u -d ${PSTAGE_TMPDIR_STAGE}/cross + set -e + fi +} - # list the packages currently installed in staging - ${PSTAGE_LIST_CMD} ${STAGING_DIR} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-staging_list - ${PSTAGE_LIST_CMD} ${CROSS_DIR} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-cross_list +do_populate_staging[lockfiles] = "${STAGING_DIR}/staging.lock" +do_populate_staging[dirs] =+ "${DEPLOY_DIR_PSTAGE}" +python do_populate_staging_prepend() { + bb.build.exec_func("populate_staging_preamble", d) +} - set +e - rm -rf ${PSTAGE_TMPDIR_STAGE} - stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/staging-stamp-cache -u -d ${PSTAGE_TMPDIR_STAGE} - rc=$? - set -e +python do_populate_staging_append() { + bb.build.exec_func("populate_staging_postamble", d) +} - if [ $rc == 5 ]; then - #make a package for staging - mkdir -p ${PSTAGE_TMPDIR_STAGE}/CONTROL +staging_packager () { - echo "Package: staging-${PN}" > ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Architecture: ${PACKAGE_ARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + mkdir -p ${PSTAGE_TMPDIR_STAGE}/CONTROL - ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE} + echo "Package: staging-${PN}" > ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + echo "Architecture: ${MULTIMACH_ARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control + echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - ${PSTAGE_INSTALL_CMD} ${STAGING_DIR} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME} - fi + ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE} + ${PSTAGE_INSTALL_CMD} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME} +} - set +e - rm -rf ${PSTAGE_TMPDIR_CROSS} - stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/cross-stamp-cache -u -d ${PSTAGE_TMPDIR_CROSS} - rc=$? - set -e - - if [ $rc == 5 ]; then - - #make a package for cross - mkdir -p ${PSTAGE_TMPDIR_CROSS}/CONTROL - - echo "Package: cross-${PN}" > ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - echo "Priority: Optional" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - echo "Architecture: ${BUILD_ARCH}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_CROSS}/CONTROL/control - - ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_CROSS} ${DEPLOY_DIR_PSTAGE} - - ${PSTAGE_INSTALL_CMD} ${CROSS_DIR} ${DEPLOY_DIR_PSTAGE}/${PCROSS_PKGNAME} - fi +python do_package_stage () { + if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1": + return + + bb.build.exec_func("read_subpackage_metadata", d) + packages = (bb.data.getVar('PACKAGES', d, 1) or "").split() + if len(packages) > 0: + stagepath = bb.data.getVar("PSTAGE_TMPDIR_STAGE", d, 1) + if bb.data.inherits_class('package_ipk', d): + ipkpath = os.path.join(stagepath, "deploy", "ipk") + bb.mkdirhier(ipkpath) + if bb.data.inherits_class('package_deb', d): + debpath = os.path.join(stagepath, "deploy", "deb") + bb.mkdirhier(debpath) + + for pkg in packages: + pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1) + if not pkgname: + pkgname = pkg + arch = bb.data.getVar('PACKAGE_ARCH_%s' % pkg, d, 1) + if not arch: + arch = bb.data.getVar('PACKAGE_ARCH', d, 1) + if not packaged(pkg, d): + continue + if bb.data.inherits_class('package_ipk', d): + srcname = bb.data.expand(pkgname + "_${PV}-${PR}_" + arch + ".ipk", d) + 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) + if bb.data.inherits_class('package_deb', d): + if arch == 'all': + srcname = bb.data.expand(pkgname + "_${PV}-${PR}_all.deb", d) + else: + srcname = bb.data.expand(pkgname + "_${PV}-${PR}_${DPKG_ARCH}.deb", d) + 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) + bb.build.exec_func("staging_helper", d) + lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d)) + bb.build.exec_func("staging_packager", d) + bb.utils.unlockfile(lf) } +addtask package_stage after do_package_write_ipk do_package_write_deb do_package_write do_populate_staging before do_build + diff --git a/classes/packaged-staging2.bbclass b/classes/packaged-staging2.bbclass deleted file mode 100644 index 29ce72d65c..0000000000 --- a/classes/packaged-staging2.bbclass +++ /dev/null @@ -1,229 +0,0 @@ -# -# Populate builds using prebuilt packages where possible to speed up builds -# and allow staging to be reconstructed. -# -# To use it add that line to conf/local.conf: -# -# INHERIT = "packaged-staging" - -python () { - import bb - if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('image', d) and not bb.data.inherits_class('cross', d) and not bb.data.inherits_class('sdk', d): - deps = bb.data.getVarFlag('do_populate_staging', 'depends', d) or "" - deps += " stagemanager-native:do_populate_staging" - bb.data.setVarFlag('do_populate_staging', 'depends', deps, d) - - deps = bb.data.getVarFlag('do_prepackaged_stage', 'depends', d) or "" - deps += " ipkg-native:do_populate_staging ipkg-utils-native:do_populate_staging" - bb.data.setVarFlag('do_prepackaged_stage', 'depends', deps, d) - else: - bb.data.setVar("PSTAGING_DISABLED", "1", d) -} - -export PSTAGING_DISABLED = "0" - -DEPLOY_DIR_PSTAGE = "${DEPLOY_DIR}/pstage" - -PSTAGE_BUILD_CMD = "${IPKGBUILDCMD}" -PSTAGE_INSTALL_CMD = "ipkg-cl install -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" -PSTAGE_UPDATE_CMD = "ipkg-cl update -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" -PSTAGE_REMOVE_CMD = "ipkg-cl remove -force-depends -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" -PSTAGE_LIST_CMD = "ipkg-cl list_installed -f ${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf -o ${TMPDIR}" -PSTAGE_PKGNAME = "staging-${PN}_${PV}-${PR}_${MULTIMACH_ARCH}.ipk" - -PSTAGE_TMPDIR_STAGE = "${WORKDIR}/staging-pkg" - -do_clean_append() { - """ - Clear the build and temp directories - """ - bb.note("Uninstalling package from staging...") - path = bb.data.getVar("PATH", d, 1) - removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1) - removepkg = bb.data.expand("staging-${PN}", d) - ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg)) - if ret != 0: - bb.note("Failure removing staging package") - - stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d) - bb.note("Removing staging package %s" % stagepkg) - #os.system('rm -rf ' + stagepkg) -} - -staging_helper () { - #assemble appropriate ipkg.conf - conffile=${DEPLOY_DIR_PSTAGE}/ipkg-${MACHINE}.conf - mkdir -p ${DEPLOY_DIR_PSTAGE}/pstaging_lists - if [ ! -e $conffile ]; then - ipkgarchs="${BUILD_ARCH} all any noarch ${TARGET_ARCH} ${PACKAGE_ARCHS} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}" - priority=1 - for arch in $ipkgarchs; do - echo "arch $arch $priority" >> $conffile - priority=$(expr $priority + 5) - done - echo "src oe-staging file:${DEPLOY_DIR_PSTAGE}" >> $conffile - - OLD_PWD=`pwd` - cd ${DEPLOY_DIR_PSTAGE} - ipkg-make-index -p Packages . - cd ${OLD_PWD} - - ${PSTAGE_UPDATE_CMD} - fi -} - -python do_prepackaged_stage () { - import os - - if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1": - bb.build.make_stamp("do_prepackaged_stage", d) - return - - bb.note("Uninstalling any existing package from staging...") - path = bb.data.getVar("PATH", d, 1) - removecmd = bb.data.getVar("PSTAGE_REMOVE_CMD", d, 1) - removepkg = bb.data.expand("staging-${PN}", d) - lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d)) - ret = os.system("PATH=\"%s\" %s %s" % (path, removecmd, removepkg)) - bb.utils.unlockfile(lf) - if ret != 0: - bb.note("Failure attempting to remove staging package") - - stagepkg = bb.data.expand("${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME}", d) - - if os.path.exists(stagepkg): - bb.note("Following speedup\n") - path = bb.data.getVar("PATH", d, 1) - installcmd = bb.data.getVar("PSTAGE_INSTALL_CMD", d, 1) - - bb.build.exec_func("staging_helper", d) - - bb.debug(1, "Staging stuff already packaged, using that instead") - lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d)) - ret = os.system("PATH=\"%s\" %s %s" % (path, installcmd, stagepkg)) - bb.utils.unlockfile(lf) - if ret != 0: - bb.note("Failure installing prestage package") - - bb.build.make_stamp("do_prepackaged_stage", d) - bb.build.make_stamp("do_fetch", d) - bb.build.make_stamp("do_unpack", d) - bb.build.make_stamp("do_munge", d) - bb.build.make_stamp("do_patch", d) - bb.build.make_stamp("do_configure", d) - bb.build.make_stamp("do_qa_configure", d) - bb.build.make_stamp("do_rig_locales", d) - bb.build.make_stamp("do_compile", d) - bb.build.make_stamp("do_install", d) - bb.build.make_stamp("do_deploy", d) - bb.build.make_stamp("do_package", d) - bb.build.make_stamp("do_populate_staging", d) - bb.build.make_stamp("do_package_write_deb", d) - bb.build.make_stamp("do_package_write_ipk", d) - bb.build.make_stamp("do_package_write", d) - bb.build.make_stamp("do_package_stage", d) - bb.build.make_stamp("do_qa_staging", d) - - else: - bb.build.make_stamp("do_prepackaged_stage", d) -} -do_prepackaged_stage[cleandirs] = "${PSTAGE_TMPDIR_STAGE}" -do_prepackaged_stage[selfstamp] = "1" -addtask prepackaged_stage before do_fetch - -populate_staging_preamble () { - if [ "$PSTAGING_DISABLED" != "1" ]; then - #mkdir -p ${DEPLOY_DIR_PSTAGE} - - stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u - stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u - fi -} - -populate_staging_postamble () { - if [ "$PSTAGING_DISABLED" != "1" ]; then - # list the packages currently installed in staging - ${PSTAGE_LIST_CMD} | awk '{print $1}' > ${DEPLOY_DIR_PSTAGE}/installed-list - - set +e - stage-manager -p ${STAGING_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-staging -u -d ${PSTAGE_TMPDIR_STAGE}/staging - stage-manager -p ${CROSS_DIR} -c ${DEPLOY_DIR_PSTAGE}/stamp-cache-cross -u -d ${PSTAGE_TMPDIR_STAGE}/cross - set -e - fi -} - -do_populate_staging[lockfiles] = "${STAGING_DIR}/staging.lock" -do_populate_staging[dirs] =+ "${DEPLOY_DIR_PSTAGE}" -python do_populate_staging_prepend() { - bb.build.exec_func("populate_staging_preamble", d) -} - -python do_populate_staging_append() { - bb.build.exec_func("populate_staging_postamble", d) -} - - -staging_packager () { - - mkdir -p ${PSTAGE_TMPDIR_STAGE}/CONTROL - - echo "Package: staging-${PN}" > ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Version: ${PV}-${PR}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Description: ${DESCRIPTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Section: ${SECTION}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Priority: Optional" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Maintainer: ${MAINTAINER}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Architecture: ${MULTIMACH_ARCH}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - echo "Source: ${SRC_URI}" >> ${PSTAGE_TMPDIR_STAGE}/CONTROL/control - - ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${DEPLOY_DIR_PSTAGE} - ${PSTAGE_INSTALL_CMD} ${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGNAME} -} - -python do_package_stage () { - if bb.data.getVar("PSTAGING_DISABLED", d, 1) == "1": - return - - bb.build.exec_func("read_subpackage_metadata", d) - packages = (bb.data.getVar('PACKAGES', d, 1) or "").split() - if len(packages) > 0: - stagepath = bb.data.getVar("PSTAGE_TMPDIR_STAGE", d, 1) - if bb.data.inherits_class('package_ipk', d): - ipkpath = os.path.join(stagepath, "deploy", "ipk") - bb.mkdirhier(ipkpath) - if bb.data.inherits_class('package_deb', d): - debpath = os.path.join(stagepath, "deploy", "deb") - bb.mkdirhier(debpath) - - for pkg in packages: - pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1) - if not pkgname: - pkgname = pkg - arch = bb.data.getVar('PACKAGE_ARCH_%s' % pkg, d, 1) - if not arch: - arch = bb.data.getVar('PACKAGE_ARCH', d, 1) - if not packaged(pkg, d): - continue - if bb.data.inherits_class('package_ipk', d): - srcname = bb.data.expand(pkgname + "_${PV}-${PR}_" + arch + ".ipk", d) - 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) - if bb.data.inherits_class('package_deb', d): - if arch == 'all': - srcname = bb.data.expand(pkgname + "_${PV}-${PR}_all.deb", d) - else: - srcname = bb.data.expand(pkgname + "_${PV}-${PR}_${DPKG_ARCH}.deb", d) - 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) - bb.build.exec_func("staging_helper", d) - lf = bb.utils.lockfile(bb.data.expand("${STAGING_DIR}/staging.lock", d)) - bb.build.exec_func("staging_packager", d) - bb.utils.unlockfile(lf) -} - -addtask package_stage after do_package_write_ipk do_package_write_deb do_package_write do_populate_staging before do_build - -- cgit v1.2.3 From fe7f68a8201ffd272cb2abd9bf6b6c2a8cf0e172 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 19 Feb 2008 12:21:57 +0000 Subject: package_deb.bbclass: Tweaks from poky - use PKGDEST, don't clobber any existing do_package_write_deb depends and only set when PACKAGES isn't empty --- classes/package_deb.bbclass | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'classes') diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass index c550c2fbff..1a3622c3bb 100644 --- a/classes/package_deb.bbclass +++ b/classes/package_deb.bbclass @@ -54,7 +54,7 @@ python do_package_deb_install () { # env of the fork+execve'd processs # Set up environment - apt_config = os.getenv('APT_CONFIG') + apt_config_backup = os.getenv('APT_CONFIG') os.putenv('APT_CONFIG', os.path.join(stagingdir, 'etc', 'apt', 'apt.conf')) path = os.getenv('PATH') os.putenv('PATH', '%s:%s' % (stagingbindir, os.getenv('PATH'))) @@ -64,7 +64,7 @@ python do_package_deb_install () { commands.getstatusoutput('apt-get install -y %s' % pkgfn) # revert environment - os.putenv('APT_CONFIG', apt_config) + os.putenv('APT_CONFIG', apt_config_backup) os.putenv('PATH', path) } @@ -104,7 +104,8 @@ python do_package_deb () { for pkg in packages.split(): localdata = bb.data.createCopy(d) - root = "%s/install/%s" % (workdir, pkg) + pkgdest = bb.data.getVar('PKGDEST', d, 1) + root = "%s/%s" % (pkgdest, pkg) lf = bb.utils.lockfile(root + ".lock") @@ -265,7 +266,10 @@ python do_package_deb () { python () { import bb if bb.data.getVar('PACKAGES', d, True) != '': - bb.data.setVarFlag('do_package_write_deb', 'depends', 'dpkg-native:do_populate_staging fakeroot-native:do_populate_staging', d) + deps = (bb.data.getVarFlag('do_package_write_deb', 'depends', d) or "").split() + deps.append('dpkg-native:do_populate_staging') + deps.append('fakeroot-native:do_populate_staging') + bb.data.setVarFlag('do_package_write_deb', 'depends', " ".join(deps), d) } python do_package_write_deb () { -- cgit v1.2.3 From a6b99dfd68512d6ce292534d0524b8abae5da4cf Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 19 Feb 2008 12:23:07 +0000 Subject: package_ipkg.bbclass: Remove uneeded line, the anonymous python function sets this only in the case its needed (PACKAGES isnt empty) --- classes/package_ipk.bbclass | 1 - 1 file changed, 1 deletion(-) (limited to 'classes') diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass index 57fcaa763f..de7f0fe0c4 100644 --- a/classes/package_ipk.bbclass +++ b/classes/package_ipk.bbclass @@ -313,5 +313,4 @@ python do_package_write_ipk () { bb.build.exec_func("do_package_ipk", d) } do_package_write_ipk[dirs] = "${D}" -do_package_write_ipk[depends] = "ipkg-utils-native:do_populate_staging" addtask package_write_ipk before do_package_write after do_package -- cgit v1.2.3 From a6862865f72d4becafae03b9a973b5c12f6373f2 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 19 Feb 2008 12:26:02 +0000 Subject: package_rpm/tar.bbclass: Don't clobber task depends, append to it. Also make tar packaging slightly less verbose (from poky) --- classes/package_rpm.bbclass | 5 ++++- classes/package_tar.bbclass | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'classes') diff --git a/classes/package_rpm.bbclass b/classes/package_rpm.bbclass index 7fc5e8ea96..6713f8fcad 100644 --- a/classes/package_rpm.bbclass +++ b/classes/package_rpm.bbclass @@ -134,7 +134,10 @@ python do_package_rpm () { python () { import bb if bb.data.getVar('PACKAGES', d, True) != '': - bb.data.setVarFlag('do_package_write_rpm', 'depends', 'rpm-native:do_populate_staging', d) + deps = (bb.data.getVarFlag('do_package_write_rpm', 'depends', d) or "").split() + deps.append('rpm-native:do_populate_staging') + deps.append('fakeroot-native:do_populate_staging')