summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorFlorian Boor <florian.boor@kernelconcepts.de>2007-11-06 15:16:38 +0000
committerFlorian Boor <florian.boor@kernelconcepts.de>2007-11-06 15:16:38 +0000
commitf0eb3fa507e436d44b943bedfcd8afa5ff760971 (patch)
tree15a57fffc1a01825821f35508fc84ce2a08fd93e /classes
parent51d30ada0db9ff322925628fe9d965687685f52d (diff)
parentb8a64f32a1bd74900ef43067e40fa1153c5f27cc (diff)
merge of 'c5d7d939915c058ea8efba4e6e2fa2e5f1648626'
and 'd6978786d6310b56cb0f5a93790659cd481ca0d5'
Diffstat (limited to 'classes')
-rw-r--r--classes/autotools.bbclass6
-rw-r--r--classes/base.bbclass13
-rw-r--r--classes/bootimg.bbclass53
-rw-r--r--classes/cpan.bbclass4
-rw-r--r--classes/cross.bbclass2
-rw-r--r--classes/module.bbclass2
-rw-r--r--classes/mozilla.bbclass6
-rw-r--r--classes/native.bbclass2
-rw-r--r--classes/package.bbclass85
9 files changed, 128 insertions, 45 deletions
diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass
index fccf2b6d80..8e4fba9400 100644
--- a/classes/autotools.bbclass
+++ b/classes/autotools.bbclass
@@ -97,9 +97,9 @@ autotools_do_configure() {
AUTOV=`automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"`
automake --version
echo "AUTOV is $AUTOV"
- install -d ${STAGING_DIR}/${HOST_SYS}/share/aclocal
- install -d ${STAGING_DIR}/${HOST_SYS}/share/aclocal-$AUTOV
- acpaths="$acpaths -I ${STAGING_DIR}/${HOST_SYS}/share/aclocal-$AUTOV -I ${STAGING_DIR}/${HOST_SYS}/share/aclocal"
+ install -d ${STAGING_DATADIR}/aclocal
+ install -d ${STAGING_DATADIR}/aclocal-$AUTOV
+ acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
# autoreconf is too shy to overwrite aclocal.m4 if it doesn't look
# like it was auto-generated. Work around this by blowing it away
# by hand, unless the package specifically asked not to run aclocal.
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 2cf205fbe9..c504f78283 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -387,9 +387,6 @@ oe_machinstall() {
fi
}
-# Remove and re-create ${D} so that is it guaranteed to be empty
-do_install[cleandirs] = "${D}"
-
addtask listtasks
do_listtasks[nostamp] = "1"
python do_listtasks() {
@@ -687,10 +684,10 @@ base_do_stage () {
:
}
-do_populate_staging[dirs] = "${STAGING_DIR}/${TARGET_SYS}/bin ${STAGING_DIR}/${TARGET_SYS}/lib \
- ${STAGING_DIR}/${TARGET_SYS}/include \
- ${STAGING_DIR}/${BUILD_SYS}/bin ${STAGING_DIR}/${BUILD_SYS}/lib \
- ${STAGING_DIR}/${BUILD_SYS}/include \
+do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/bin ${STAGING_DIR_TARGET}/lib \
+ ${STAGING_DIR_TARGET}/include \
+ ${STAGING_BINDIR_NATIVE} ${STAGING_LIBDIR_NATIVE} \
+ ${STAGING_INCDIR_NATIVE} \
${STAGING_DATADIR} \
${S} ${B}"
@@ -703,6 +700,8 @@ python do_populate_staging () {
addtask install after do_compile
do_install[dirs] = "${D} ${S} ${B}"
+# Remove and re-create ${D} so that is it guaranteed to be empty
+do_install[cleandirs] = "${D}"
base_do_install() {
:
diff --git a/classes/bootimg.bbclass b/classes/bootimg.bbclass
index 820749a335..0c96001096 100644
--- a/classes/bootimg.bbclass
+++ b/classes/bootimg.bbclass
@@ -12,41 +12,48 @@
# ${APPEND} - an override list of append strings for each label
# ${SYSLINUX_OPTS} - additional options to add to the syslinux file ';' delimited
-DEPENDS_append=" dosfstools-native syslinux-native mtools-native cdrtools-native"
+do_bootimg[depends] += "dosfstools-native:do_populate_staging \
+ syslinux-native:do_populate_staging \
+ mtools-native:do_populate_staging \
+ cdrtools-native:do_populate_staging"
-BDIR="${WORKDIR}/boot"
-ISODIR="${IMAGE_ROOTFS}/isolinux/"
+PACKAGES = " "
-BOOTIMG_VOLUME_ID ?= "oe"
+HDDDIR = "${S}/hdd/boot"
+ISODIR = "${S}/cd/isolinux"
+
+BOOTIMG_VOLUME_ID ?= "oe"
BOOTIMG_EXTRA_SPACE ?= "64"
# Get the build_syslinux_cfg() function from the syslinux class
-SYSLINUXCFG="${BDIR}/syslinux.cfg"
-SYSLINUXMENU="${BDIR}/menu"
+SYSLINUXCFG = "${HDDDIR}/syslinux.cfg"
+SYSLINUXMENU = "${HDDDIR}/menu"
+
inherit syslinux
build_boot_bin() {
- install -d ${BDIR}
- install -m 0644 ${STAGING_KERNEL_DIR}/bzImage \
- ${BDIR}/vmlinuz
+ install -d ${HDDDIR}
+ install -m 0644 ${STAGING_DIR}/${MACHINE}${HOST_VENDOR}-${HOST_OS}/kernel/bzImage \
+ ${HDDDIR}/vmlinuz
if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then
- install -m 0644 ${INITRD} ${BDIR}/initrd
+ install -m 0644 ${INITRD} ${HDDDIR}/initrd
fi
- install -m 444 ${STAGING_DIR}/${BUILD_SYS}/share/syslinux/ldlinux.sys \
- ${BDIR}/ldlinux.sys
+ install -m 444 ${STAGING_DATADIR_NATIVE}/syslinux/ldlinux.sys \
+ ${HDDDIR}/ldlinux.sys
# Do a little math, bash style
- #BLOCKS=`du -s ${BDIR} | cut -f 1`
- BLOCKS=`du -bks ${BDIR} | cut -f 1`
+ #BLOCKS=`du -s ${HDDDIR} | cut -f 1`
+ BLOCKS=`du -bks ${HDDDIR} | cut -f 1`
SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}`
- mkdosfs -F 12 -n ${BOOTIMG_VOLUME_ID} -d ${BDIR} \
- -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-boot.bin $SIZE
+ mkdosfs -F 12 -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \
+ -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE
- syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-boot.bin
+ syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
+ chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
#Create an ISO if we have an INITRD
if [ -n "${INITRD}" ] && [ -s "${INITRD}" ] && [ "${NOISO}" != "1" ] ; then
@@ -54,12 +61,12 @@ build_boot_bin() {
# Install the kernel
- install -m 0644 ${STAGING_KERNEL_DIR}/bzImage \
+ install -m 0644 ${STAGING_DIR}/${MACHINE}${HOST_VENDOR}-${HOST_OS}/kernel/bzImage \
${ISODIR}/vmlinuz
# Install the configuration files
- cp ${BDIR}/syslinux.cfg ${ISODIR}/isolinux.cfg
+ cp ${HDDDIR}/syslinux.cfg ${ISODIR}/isolinux.cfg
if [ -f ${SYSLINUXMENU} ]; then
cp ${SYSLINUXMENU} ${ISODIR}
@@ -68,21 +75,19 @@ build_boot_bin() {
install -m 0644 ${INITRD} ${ISODIR}/initrd
# And install the syslinux stuff
- cp ${STAGING_DIR}/${BUILD_SYS}/share/syslinux/isolinux.bin \
+ cp ${STAGING_DATADIR_NATIVE}/syslinux/isolinux.bin \
${ISODIR}
mkisofs -V ${BOOTIMG_VOLUME_ID} \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
-b isolinux/isolinux.bin -c isolinux/boot.cat -r \
-no-emul-boot -boot-load-size 4 -boot-info-table \
- ${IMAGE_ROOTFS}
+ ${S}/cd/
fi
}
python do_bootimg() {
- docfg = bb.data.getVar('AUTO_SYSLINUXCFG', d, 1)
- if docfg:
- bb.build.exec_func('build_syslinux_cfg', d)
+ bb.build.exec_func('build_syslinux_cfg', d)
bb.build.exec_func('build_boot_bin', d)
}
diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass
index 3250528c7a..5a0b4a5c92 100644
--- a/classes/cpan.bbclass
+++ b/classes/cpan.bbclass
@@ -20,14 +20,14 @@ cpan_do_configure () {
-e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
-e "s:\(INSTALLVENDORLIB = \).*:\1${D}${datadir}/perl5:" \
-e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5:" \
- -e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
+ -e "s:\(LDDLFLAGS.*\)${STAGING_LIBDIR_NATIVE}:\1${STAGING_LIBDIR}:" \
Makefile
else
sed -i -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:" \
-e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
-e "s:\(INSTALLVENDORLIB = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
-e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
- -e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
+ -e "s:\(LDDLFLAGS.*\)${STAGING_LIBDIR_NATIVE}:\1${STAGING_LIBDIR}:" \
Makefile
fi
fi
diff --git a/classes/cross.bbclass b/classes/cross.bbclass
index 3588e2344a..a6b000cb6a 100644
--- a/classes/cross.bbclass
+++ b/classes/cross.bbclass
@@ -18,7 +18,7 @@ CPPFLAGS = "${BUILD_CPPFLAGS}"
CFLAGS = "${BUILD_CFLAGS}"
CXXFLAGS = "${BUILD_CFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
-LDFLAGS_build-darwin = "-L${STAGING_DIR}/${BUILD_SYS}/lib "
+LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE} "
# Overrides for paths
diff --git a/classes/module.bbclass b/classes/module.bbclass
index 7eac001ec4..7083076b5f 100644
--- a/classes/module.bbclass
+++ b/classes/module.bbclass
@@ -1,4 +1,4 @@
-RDEPENDS += "kernel (${KERNEL_VERSION})"
+RDEPENDS += "kernel (${KERNEL_VERSION}) update-modules"
DEPENDS += "virtual/kernel"
inherit module-base
diff --git a/classes/mozilla.bbclass b/classes/mozilla.bbclass
index bd8e9193d9..abf2bc7623 100644
--- a/classes/mozilla.bbclass
+++ b/classes/mozilla.bbclass
@@ -19,7 +19,7 @@ export MOZ_OBJDIR = "${S}"
export CONFIGURE_ARGS = "${EXTRA_OECONF}"
export HOST_LIBIDL_CFLAGS = "`${HOST_LIBIDL_CONFIG} --cflags`"
export HOST_LIBIDL_LIBS = "`${HOST_LIBIDL_CONFIG} --libs`"
-export HOST_LIBIDL_CONFIG = "PKG_CONFIG_PATH=${STAGING_DIR}/${BUILD_SYS}/share/pkgconfig pkg-config libIDL-2.0"
+export HOST_LIBIDL_CONFIG = "PKG_CONFIG_PATH=${STAGING_DATADIR_NATIVE}/pkgconfig pkg-config libIDL-2.0"
export HOST_CC = "${BUILD_CC}"
export HOST_CXX = "${BUILD_CXX}"
export HOST_CFLAGS = "${BUILD_CFLAGS}"
@@ -33,8 +33,8 @@ mozilla_do_configure() {
set -e
for cg in `find ${S} -name config.guess`; do
install -m 0755 \
- ${STAGING_DIR}/${BUILD_SYS}/share/gnu-config/config.guess \
- ${STAGING_DIR}/${BUILD_SYS}/share/gnu-config/config.sub \
+ ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess \
+ ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub \
`dirname $cg`/
done
)
diff --git a/classes/native.bbclass b/classes/native.bbclass
index 104d5a49da..d51c675909 100644
--- a/classes/native.bbclass
+++ b/classes/native.bbclass
@@ -27,7 +27,7 @@ CPPFLAGS = "${BUILD_CPPFLAGS}"
CFLAGS = "${BUILD_CFLAGS}"
CXXFLAGS = "${BUILD_CFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
-LDFLAGS_build-darwin = "-L${STAGING_DIR}/${BUILD_SYS}/lib "
+LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE} "
STAGING_BINDIR = "${STAGING_BINDIR_NATIVE}"
STAGING_BINDIR_CROSS = "${STAGING_BINDIR_NATIVE}"
diff --git a/classes/package.bbclass b/classes/package.bbclass
index b114049b8e..ea94f89253 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -318,6 +318,76 @@ 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
@@ -380,6 +450,8 @@ python populate_packages () {
pkgdest = bb.data.getVar('PKGDEST', d, 1)
os.system('rm -rf %s' % pkgdest)
+ seen = []
+
for pkg in package_list:
localdata = bb.data.createCopy(d)
root = os.path.join(pkgdest, pkg)
@@ -410,11 +482,17 @@ python populate_packages () {
continue
if (not os.path.islink(file)) and (not os.path.exists(file)):
continue
+ if file in seen:
+ continue
+ seen.append(file)
+ if os.path.isdir(file):
+ bb.mkdirhier(os.path.join(root,file))
+ continue
fpath = os.path.join(root,file)
dpath = os.path.dirname(fpath)
bb.mkdirhier(dpath)
- ret = bb.movefile(file,fpath)
- if ret is None or ret == 0:
+ ret = copyfile(file, fpath)
+ if ret is False or ret == 0:
raise bb.build.FuncFailed("File population failed")
del localdata
os.chdir(workdir)
@@ -423,7 +501,8 @@ python populate_packages () {
for root, dirs, files in os.walk(dvar):
for f in files:
path = os.path.join(root[len(dvar):], f)
- unshipped.append(path)
+ if ('.' + path) not in seen:
+ unshipped.append(path)
if unshipped != []:
bb.note("the following files were installed but not shipped in any package:")