summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Lauer <mickey@vanille-media.de>2007-12-02 16:05:32 +0000
committerMichael Lauer <mickey@vanille-media.de>2007-12-02 16:05:32 +0000
commit282088f1ad999b8427ad8acf43021538388afa60 (patch)
tree3e0564475209464a8c8ea73930e74fdef7d6e1ad
parent540a1c1e47ffaf5fff8788d039ea32c0b1c5e4e8 (diff)
parent76690a09c46fc3214e2f0e3daab4ba1c55f52a0e (diff)
merge of 'cdaf3702bfeaebdf9d1466a398935ab179583c9a'
and 'd045039e1aba07c5bb52c9acf9236d6bb0cf1831'
-rw-r--r--classes/base.bbclass25
-rw-r--r--classes/cross.bbclass2
-rw-r--r--classes/debian.bbclass2
-rw-r--r--classes/package.bbclass53
-rw-r--r--classes/packaged-staging2.bbclass229
-rw-r--r--classes/siteinfo.bbclass1
-rw-r--r--conf/bitbake.conf11
-rw-r--r--conf/machine/include/ixp4xx.inc7
-rw-r--r--packages/git/git-native_1.5.3.bb4
-rw-r--r--packages/git/git.inc19
-rw-r--r--packages/images/essential-image.bb15
-rw-r--r--packages/images/essential-machine-image.bb23
-rw-r--r--packages/ipkg/files/ipkg_bugfix.patch44
-rw-r--r--packages/ipkg/ipkg-native_0.99.163.bb3
-rw-r--r--packages/libtool/libtool-1.5.10/libdir-la2.patch64
-rw-r--r--packages/libtool/libtool-1.5.10/nmedit_fix.patch56
-rw-r--r--packages/libtool/libtool-1.5.10/nousrlib.patch11
-rw-r--r--packages/libtool/libtool-1.5.10/tag1.patch13
-rw-r--r--packages/libtool/libtool-cross_1.5.10.bb17
-rw-r--r--packages/libtool/libtool-native_1.5.10.bb6
-rw-r--r--packages/libtool/libtool_1.5.10.bb5
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.21.650
-rw-r--r--packages/linux/linux-ixp4xx_2.6.21.6.bb2
-rw-r--r--packages/meta/meta-toolchain.bb17
-rw-r--r--packages/shasum/shasum-native.bb3
-rwxr-xr-xpackages/stage-manager/files/stage-manager57
-rw-r--r--packages/stage-manager/stagemanager-native_0.0.1.bb2
-rw-r--r--packages/tasks/task-base.bb10
-rw-r--r--packages/tasks/task-boot.bb2
-rw-r--r--packages/x11vnc/x11vnc_0.9.3.bb2
-rw-r--r--site/arm-darwin5
-rw-r--r--site/common-glibc6
32 files changed, 586 insertions, 180 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 1794382699..7526dff65e 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -315,7 +315,9 @@ oe_libinstall() {
# stop libtool using the final directory name for libraries
# in staging:
__runcmd rm -f $destpath/$libname.la
- __runcmd sed -e 's/^installed=yes$/installed=no/' -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,g' $dotlai >$destpath/$libname.la
+ __runcmd sed -e 's/^installed=yes$/installed=no/' \
+ -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,g' \
+ $dotlai >$destpath/$libname.la
else
__runcmd install -m 0644 $dotlai $destpath/$libname.la
fi
@@ -702,7 +704,7 @@ do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/${layout_bindir} ${STAGING_DI
addtask populate_staging after do_install
python do_populate_staging () {
- bb.build.exec_func('do_stage', d)
+ bb.build.exec_func('do_stage', d)
}
addtask install after do_compile
@@ -744,7 +746,7 @@ def explode_deps(s):
def packaged(pkg, d):
import os, bb
- return os.access(bb.data.expand('${PKGDATA_DIR}/runtime/%s.packaged' % pkg, d), os.R_OK)
+ return os.access(get_subpkgedata_fn(pkg, d) + '.packaged', os.R_OK)
def read_pkgdatafile(fn):
pkgdata = {}
@@ -768,16 +770,23 @@ def read_pkgdatafile(fn):
return pkgdata
+def get_subpkgedata_fn(pkg, d):
+ import bb, os
+ archs = bb.data.expand("${PACKAGE_ARCHS}", d).split(" ")
+ archs.reverse()
+ for arch in archs:
+ fn = bb.data.expand('${STAGING_DIR}/pkgdata/' + arch + '${TARGET_VENDOR}-${TARGET_OS}/runtime/%s' % pkg, d)
+ if os.path.exists(fn):
+ return fn
+ return bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d)
+
def has_subpkgdata(pkg, d):
import bb, os
- fn = bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d)
- return os.access(fn, os.R_OK)
+ return os.access(get_subpkgedata_fn(pkg, d), os.R_OK)
def read_subpkgdata(pkg, d):
import bb, os
- fn = bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d)
- return read_pkgdatafile(fn)
-
+ return read_pkgdatafile(get_subpkgedata_fn(pkg, d))
def has_pkgdata(pn, d):
import bb, os
diff --git a/classes/cross.bbclass b/classes/cross.bbclass
index 6e5480a2a0..89cb3e9569 100644
--- a/classes/cross.bbclass
+++ b/classes/cross.bbclass
@@ -20,6 +20,8 @@ CXXFLAGS = "${BUILD_CFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE}"
+TOOLCHAIN_OPTIONS = ""
+
# Overrides for paths
# Path prefixes
diff --git a/classes/debian.bbclass b/classes/debian.bbclass
index a38f10d629..dd0789adae 100644
--- a/classes/debian.bbclass
+++ b/classes/debian.bbclass
@@ -1,5 +1,3 @@
-STAGING_PKGMAPS_DIR = "${STAGING_DIR}/pkgmaps/debian"
-
# Debian package renaming only occurs when a package is built
# We therefore have to make sure we build all runtime packages
# before building the current package to make the packages runtime
diff --git a/classes/package.bbclass b/classes/package.bbclass
index 6c61f7bdda..67aeb33a13 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -34,9 +34,6 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
return
packages = bb.data.getVar('PACKAGES', d, 1).split()
- if not packages:
- # nothing to do
- return
if postinst:
postinst = '#!/bin/sh\n' + postinst + '\n'
@@ -189,42 +186,15 @@ def runstrip(file, d):
# Package data handling routines
#
-STAGING_PKGMAPS_DIR ?= "${STAGING_DIR}/pkgmaps"
-
-def add_package_mapping (pkg, new_name, d):
- import bb, os
-
- def encode(str):
- import codecs
- c = codecs.getencoder("string_escape")
- return c(str)[0]
-
- pmap_dir = bb.data.getVar('STAGING_PKGMAPS_DIR', d, 1)
-
- bb.mkdirhier(pmap_dir)
-
- data_file = os.path.join(pmap_dir, pkg)
-
- f = open(data_file, 'w')
- f.write("%s\n" % encode(new_name))
- f.close()
-
def get_package_mapping (pkg, d):
import bb, os
- def decode(str):
- import codecs
- c = codecs.getdecoder("string_escape")
- return c(str)[0]
+ data = read_subpkgdata(pkg, d)
+ key = "PKG_%s" % pkg
- data_file = bb.data.expand("${STAGING_PKGMAPS_DIR}/%s" % pkg, d)
+ if key in data:
+ return data[key]
- if os.access(data_file, os.R_OK):
- f = file(data_file, 'r')
- lines = f.readlines()
- f.close()
- for l in lines:
- return decode(l).strip()
return pkg
def runtime_mapping_rename (varname, d):
@@ -258,9 +228,6 @@ python package_do_split_locales() {
return
packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
- if not packages:
- bb.debug(1, "no packages to build; not splitting locales")
- return
datadir = bb.data.getVar('datadir', d, 1)
if not datadir:
@@ -410,9 +377,6 @@ python populate_packages () {
bb.mkdirhier(dvar)
packages = bb.data.getVar('PACKAGES', d, 1)
- if not packages:
- bb.debug(1, "PACKAGES not defined, nothing to package")
- return
pn = bb.data.getVar('PN', d, 1)
if not pn:
@@ -516,8 +480,6 @@ python populate_packages () {
pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1)
if pkgname is None:
bb.data.setVar('PKG_%s' % pkg, pkg, d)
- else:
- add_package_mapping(pkg, pkgname, d)
dangling_links = {}
pkg_files = {}
@@ -604,6 +566,8 @@ python emit_pkgdata() {
sf.close()
allow_empty = bb.data.getVar('ALLOW_EMPTY_%s' % pkg, d, 1)
+ if not allow_empty:
+ allow_empty = bb.data.getVar('ALLOW_EMPTY', d, 1)
root = "%s/install/%s" % (workdir, pkg)
os.chdir(root)
g = glob('*')
@@ -903,10 +867,7 @@ python package_depchains() {
prefixes = (bb.data.getVar('DEPCHAIN_PRE', d, 1) or '').split()
def pkg_addrrecs(pkg, base, suffix, getname, rdepends, d):
- def packaged(pkg, d):
- return os.access(bb.data.expand('${PKGDATA_DIR}/runtime/%s.packaged' % pkg, d), os.R_OK)
-
- #bb.note('rdepends for %s is %s' % (base, rdepends))
+ #bb.note('rdepends for %s is %s' % (base, rdepends))
rreclist = explode_deps(bb.data.getVar('RRECOMMENDS_' + pkg, d, 1) or bb.data.getVar('RRECOMMENDS', d, 1) or "")
diff --git a/classes/packaged-staging2.bbclass b/classes/packaged-staging2.bbclass
new file mode 100644
index 0000000000..29ce72d65c
--- /dev/null
+++ b/classes/packaged-staging2.bbclass
@@ -0,0 +1,229 @@
+#
+# 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
+
diff --git a/classes/siteinfo.bbclass b/classes/siteinfo.bbclass
index c41a3ff369..a3b67b5798 100644
--- a/classes/siteinfo.bbclass
+++ b/classes/siteinfo.bbclass
@@ -25,6 +25,7 @@ def get_siteinfo_list(d):
"armeb-linux-gnueabi": "endian-big bit-32 common-glibc arm-common armeb-linux",\
"armeb-linux-uclibc": "endian-big bit-32 common-uclibc arm-common",\
"armeb-linux-uclibcgnueabi": "endian-big bit-32 common-uclibc arm-common armeb-linux-uclibc",\
+ "arm-darwin": "endian-little bit-32 common-darwin",\
"arm-linux": "endian-little bit-32 common-glibc arm-common",\
"arm-linux-gnueabi": "endian-little bit-32 common-glibc arm-common arm-linux",\
"arm-linux-uclibc": "endian-little bit-32 common-uclibc arm-common",\
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index 9d5d54bfb8..123d9ce7a7 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -311,12 +311,13 @@ export PATH_prepend = "${STAGING_BINDIR_CROSS}:${STAGING_DIR_NATIVE}${layout_sbi
##################################################################
CCACHE = "${@bb.which(bb.data.getVar('PATH', d), 'ccache') and 'ccache '}"
+TOOLCHAIN_OPTIONS = ""
-export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}"
-export CXX = "${CCACHE}${HOST_PREFIX}g++ ${HOST_CC_ARCH}"
-export F77 = "${CCACHE}${HOST_PREFIX}g77 ${HOST_CC_ARCH}"
-export CPP = "${HOST_PREFIX}gcc -E"
-export LD = "${HOST_PREFIX}ld"
+export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+export CXX = "${CCACHE}${HOST_PREFIX}g++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+export F77 = "${CCACHE}${HOST_PREFIX}g77 ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+export CPP = "${HOST_PREFIX}gcc -E${TOOLCHAIN_OPTIONS}"
+export LD = "${HOST_PREFIX}ld${TOOLCHAIN_OPTIONS}"
export CCLD = "${CC}"
export AR = "${HOST_PREFIX}ar"
export AS = "${HOST_PREFIX}as"
diff --git a/conf/machine/include/ixp4xx.inc b/conf/machine/include/ixp4xx.inc
index bc3b49c7c1..743b7ad362 100644
--- a/conf/machine/include/ixp4xx.inc
+++ b/conf/machine/include/ixp4xx.inc
@@ -3,7 +3,7 @@
#@DESCRIPTION: genric machine configuration for ixp4xx platforms
# Set default for nslu2 - can be overridden for machines with other features.
-MACHINE_FEATURES ?= "kernel26 usbhost ext2"
+MACHINE_FEATURES ?= "kernel26 usbhost ext2 redboot apex"
PREFERRED_PROVIDER_virtual/kernel ?= "linux-ixp4xx"
PREFERRED_VERSION_linux-ixp4xx ?= "2.6.21.6+svnr${SRCREV}"
@@ -21,9 +21,12 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= " \
kernel-module-via-velocity \
"
-# Set default for nslu2 - can be overridden for machines with more flash.
+# Set default for 16MB machines - can be overridden for more or less flash.
ROOT_FLASH_SIZE ?= "12"
+# Allow for rootfs loaded direct from internal hard disk
+IMAGE_FSTYPES ?= "jffs2 tar.gz"
+
# Set default for nslu2, nas100d, dsmg600
EXTRA_IMAGECMD_jffs2 = "--pad --eraseblock=0x20000 -n"
diff --git a/packages/git/git-native_1.5.3.bb b/packages/git/git-native_1.5.3.bb
new file mode 100644
index 0000000000..935c773c1c
--- /dev/null
+++ b/packages/git/git-native_1.5.3.bb
@@ -0,0 +1,4 @@
+require git.inc
+inherit native
+DEPENDS = "openssl-native curl-native zlib-native expat-native"
+PR = "r1"
diff --git a/packages/git/git.inc b/packages/git/git.inc
new file mode 100644
index 0000000000..7115d44b35
--- /dev/null
+++ b/packages/git/git.inc
@@ -0,0 +1,19 @@
+DESCRIPTION = "The git revision control system used by the Linux kernel developers"
+SECTION = "console/utils"
+LICENSE = "GPL"
+
+SRC_URI = "http://www.kernel.org/pub/software/scm/git/git-${PV}.tar.bz2 \
+ file://autotools.patch;patch=1"
+S = "${WORKDIR}/git-${PV}"
+
+EXTRA_OEMAKE = "NO_TCLTL=1"
+
+inherit autotools
+
+do_install () {
+ oe_runmake install prefix=${D} bindir=${D}${bindir} \
+ template_dir=${D}${datadir}/git-core/templates \
+ GIT_PYTHON_DIR=${D}${datadir}/git-core/python
+}
+
+FILES_${PN} += "${datadir}/git-core"
diff --git a/packages/images/essential-image.bb b/packages/images/essential-image.bb
deleted file mode 100644
index 8b566af6ec..0000000000
--- a/packages/images/essential-image.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: essential-image.bb
-# Date: 23-Apr-06
-
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-
-DEPENDS = "task-essential-to-boot"
-IMAGE_LINGUAS = ""
-IMAGE_INSTALL = "task-essential-to-boot"
-
-inherit image
-
diff --git a/packages/images/essential-machine-image.bb b/packages/images/essential-machine-image.bb
deleted file mode 100644
index b74dec5e35..0000000000
--- a/packages/images/essential-machine-image.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
-# License: MIT (see COPYING.MIT)
-#
-# Filename: essential-machine-image.bb
-# Date: 24-Apr-06
-
-DESCRIPTION = "<description>"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-
-DEPENDS = "task-essential-to-boot task-essential-parts"
-
-MACHINE_TASKS_akita = "task-essential-to-boot \
- task-essential-pcmcia task-essential-userspace \
- task-essential-usbhost task-essential-usbclient \
- task-essential-sound task-essential-irda \
- task-essential-sd"
-
-IMAGE_LINGUAS = ""
-IMAGE_INSTALL = "${MACHINE_TASKS}"
-export IMAGE_BASENAME = "essential-image"
-
-inherit image \ No newline at end of file
diff --git a/packages/ipkg/files/ipkg_bugfix.patch b/packages/ipkg/files/ipkg_bugfix.patch
new file mode 100644
index 0000000000..51eccbb2bd
--- /dev/null
+++ b/packages/ipkg/files/ipkg_bugfix.patch
@@ -0,0 +1,44 @@
+Index: C/ipkg_conf.c
+===================================================================
+--- C.orig/ipkg_conf.c 2005-06-21 13:59:32.000000000 +0000
++++ C/ipkg_conf.c 2007-11-27 01:11:17.000000000 +0000
+@@ -423,6 +423,7 @@
+ nv_pair_t *nv_pair;
+ pkg_dest_t *dest;
+ char *root_dir;
++ char *list_dir2;
+
+ for (iter = nv_pair_list->head; iter; iter = iter->next) {
+ nv_pair = iter->data;
+@@ -432,8 +433,14 @@
+ } else {
+ root_dir = strdup(nv_pair->value);
+ }
+- dest = pkg_dest_list_append(&conf->pkg_dest_list, nv_pair->name, root_dir, lists_dir);
++ if (conf->offline_root) {
++ sprintf_alloc(&list_dir2, "%s%s", conf->offline_root, lists_dir);
++ } else {
++ list_dir2 = strdup(lists_dir);
++ }
++ dest = pkg_dest_list_append(&conf->pkg_dest_list, nv_pair->name, root_dir, list_dir2);
+ free(root_dir);
++ free(list_dir2);
+ if (dest == NULL) {
+ continue;
+ }
+@@ -562,13 +569,13 @@
+ } else if (strcmp(type, "dest") == 0) {
+ nv_pair_list_append(tmp_dest_nv_pair_list, name, value);
+ } else if (strcmp(type, "lists_dir") == 0) {
+- *lists_dir = realloc(*lists_dir,strlen(value)+1);
++ *lists_dir = realloc(*lists_dir,strlen(name)+1);
+ if (*lists_dir == NULL) {
+ ipkg_message(conf, IPKG_ERROR, "ERROR: Not enough memory\n");
+ free(options);
+ return EINVAL;
+ }
+- sprintf (*lists_dir,"%s",value);
++ sprintf (*lists_dir,"%s", name);
+ } else if (strcmp(type, "arch") == 0) {
+ ipkg_message(conf, IPKG_INFO, "supported arch %s priority (%s)\n", name, value);
+ if (!value) {
diff --git a/packages/ipkg/ipkg-native_0.99.163.bb b/packages/ipkg/ipkg-native_0.99.163.bb
index 13609c9037..c8e7d08588 100644
--- a/packages/ipkg/ipkg-native_0.99.163.bb
+++ b/packages/ipkg/ipkg-native_0.99.163.bb
@@ -2,7 +2,7 @@ S = "${WORKDIR}/ipkg-${PV}"
#require ipkg_${PV}.bb
require ipkg-native.inc
-PR = "r2"
+PR = "r3"
inherit autotools pkgconfig native
@@ -10,5 +10,6 @@ SRC_URI = "http://www.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz \
file://is-processing.patch;patch=1 \
file://1-pkg-parse--Optimize-inefficient-parsing.patch;patch=1 \
file://2-pkg-vec--Optimize-gross-inefficiency.patch;patch=1 \
+ file://ipkg_bugfix.patch;patch=1 \
"
diff --git a/packages/libtool/libtool-1.5.10/libdir-la2.patch b/packages/libtool/libtool-1.5.10/libdir-la2.patch
new file mode 100644
index 0000000000..0d5d261203
--- /dev/null
+++ b/packages/libtool/libtool-1.5.10/libdir-la2.patch
@@ -0,0 +1,64 @@
+OE changes to installed=no which means we can't run the original test
+and just look in $objdir. We therefore look in both, preferring
+$objdir if it exists - RP 29/11/2007
+
+--- libtool-1.5.10/ltmain.in.orig
++++ libtool-1.5.10/ltmain.in
+@@ -3105,8 +3105,11 @@
+ fi
+ ;;
+ esac
+- if grep "^installed=no" $deplib > /dev/null; then
+- path="$absdir/$objdir"
++# OE changes to installed=no which means we can't run the original test
++# and just look in $objdir. We therefore look in both, preferring
++# $objdir if it exists, see below. - RP 29/11/2007
++# if grep "^installed=no" $deplib > /dev/null; then
++# path="$absdir/$objdir"
+ # This interferes with crosscompilation. -CL
+ # else
+ # eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+@@ -3117,7 +3120,7 @@
+ # if test "$absdir" != "$libdir"; then
+ # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ # fi
+- else
++ if ! grep "^installed=no" $deplib > /dev/null; then
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+@@ -3138,9 +3141,17 @@
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+- if test -f "$path/$depdepl" ; then
+- depdepl="$path/$depdepl"
++
++ if test -f "$absdir/$objdir/$depdepl" ; then
++ depdepl="$absdir/$objdir/$depdepl"
++ path="$absdir/$objdir"
++ elif test -f "$absdir/$depdepl" ; then
++ depdepl="$absdir/$depdepl"
++ path="$absdir"
++ else
++ path="$absdir/$objdir"
+ fi
++
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+@@ -3150,7 +3161,13 @@
+ path=""
+ ;;
+ *)
+- path="-L$path"
++ if test -d "$absdir/$objdir" ; then
++ path="-L$absdir/$objdir"
++ elif test -d "$absdir" ; then
++ path="-L$absdir"
++ else
++ path="-L$absdir/$objdir"
++ fi
+ ;;
+ esac
+ ;;
diff --git a/packages/libtool/libtool-1.5.10/nmedit_fix.patch b/packages/libtool/libtool-1.5.10/nmedit_fix.patch
new file mode 100644
index 0000000000..673f3a9a28
--- /dev/null
+++ b/packages/libtool/libtool-1.5.10/nmedit_fix.patch
@@ -0,0 +1,56 @@
+Fix so instead of calling "nmedit" it gets prefixed with the host triplet.
+
+RP - 30/11/2007
+
+Index: libtool-1.5.10/libtool.m4
+===================================================================
+--- libtool-1.5.10.orig/libtool.m4 2007-11-29 19:27:31.000000000 +0000
++++ libtool-1.5.10/libtool.m4 2007-11-29 19:29:09.000000000 +0000
+@@ -2927,11 +2927,11 @@
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then