anchor.diff:  DESCRIPTION = "Meta package for building a installable toolchain"
   LICENSE = "MIT"
  -DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native zip-native"
  -PR = "r3"
  +DEPENDS = "opkg-native ipkg-utils-native fakeroot-native sed-native zip-native"
  +PR = "r4"
  +
  +# NOTE: We need to save and restore PACKAGE_ARCHS, because sdk.bbclass
  +# will change HOST_ARCH, which can result in SITEINFO_ENDIANESS (which
  +# is computed in siteinfo.bbclass) in changing if the original HOST_ARCH
  +# endianess differs from the new HOST_ARCH endianess.  SITEINFO_ENDIANNESS
  +# is used in a number of places, including the construction of the
  +# PACKAGE_EXTRA_ARCHS list for machines that are capable of running in
  +# either endianess.  There may be better ways to fix this.
  +
  +# Save value of PACKAGE_ARCHS (note the ":=" syntax to force immediate eval)
  +REAL_PACKAGE_ARCHS := "${PACKAGE_ARCHS}"
   
   inherit canadian-sdk meta
   
  +# Restore PACKAGE_ARCHS (sdk.bbclass may have caused it to change)
  +PACKAGE_ARCHS := "${REAL_PACKAGE_ARCHS}"
  +
   SDK_DIR = "${WORKDIR}/sdk"
   SDK_OUTPUT = "${SDK_DIR}/image"
  -SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
  -SDK_SUFFIX = "toolchain"
  +SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
   
  -FEED_ARCH ?= "${TARGET_ARCH}"
  -
  -IPKG_HOST = "ipkg-cl -f ${IPKGCONF_CANSDK} -o ${SDK_OUTPUT}"
  -IPKG_TARGET = "ipkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}${prefix}"
  +IPKG_HOST = "opkg-cl -f ${IPKGCONF_CANSDK} -o ${SDK_OUTPUT}"
  +IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDK_PATH}/${TARGET_SYS}"
   
   TOOLCHAIN_CANADIAN_HOST_TASK ?= "task-sdk-canadian-host"
   TOOLCHAIN_TARGET_TASK ?= "task-sdk-bare"
  +FEED_ARCH ?= "${TARGET_ARCH}"
  +SDK_SUFFIX = "toolchain"
  +TOOLCHAIN_OUTPUTNAME ?= "${SDK_SYS}-${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-${SDK_SUFFIX}"
   
   RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_CANADIAN_HOST_TASK}"
  +
  +TOOLCHAIN_FEED_URI ?= "${DISTRO_FEED_URI}"
  +
  +modify_opkg_conf () {
  +        OUTPUT_OPKGCONF_TARGET="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg.conf"
  +        OUTPUT_OPKGCONF_HOST="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg-canadian-sdk.conf"
  +        OUTPUT_OPKGCONF_SDK="${SDK_OUTPUT}/${sysconfdir}/opkg-canadian-sdk.conf"
  +        rm ${OUTPUT_OPKGCONF_TARGET}
  +        rm ${OUTPUT_OPKGCONF_HOST}
  +        rm ${OUTPUT_OPKGCONF_SDK}
  +        opkgarchs="${PACKAGE_ARCHS}"
  +        priority=1
  +        for arch in ${opkgarchs}; do
  +                echo "arch ${arch} ${priority}" >> ${OUTPUT_OPKGCONF_TARGET};
  +                echo "src/gz ${arch} ${TOOLCHAIN_FEED_URI}/${arch}" >> ${OUTPUT_OPKGCONF_TARGET};
  +                priority=$(expr ${priority} + 5);
  +        done
  +}
   
   do_populate_sdk() {
   	rm -rf ${SDK_OUTPUT}
  
positive.code: 		revipkgarchs="$arch $revipkgarchs"
  	done
  
  	${IPKG_HOST} update
  	${IPKG_HOST} -force-depends install ${TOOLCHAIN_CANADIAN_HOST_TASK}
  
  	${IPKG_TARGET} update
  	${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
  
  	mkdir -p ${SDK_OUTPUT}${prefix}/${TARGET_SYS}
  	cp -pPR ${SDK_OUTPUT}${prefix}/usr ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/
  	rm -rf ${SDK_OUTPUT}${prefix}/usr
  
  	cp -pPR ${SDK_OUTPUT}${prefix}/lib/* ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/
  	rm -rf ${SDK_OUTPUT}${prefix}/lib/*
  
  	cp -pPR ${SDK_OUTPUT}/usr/lib/ipkg ${SDK_OUTPUT}${prefix}/lib/
  	rm -rf ${SDK_OUTPUT}/usr/lib/ipkg/*
  	rmdir -p --ignore-fail-on-non-empty ${SDK_OUTPUT}/usr/lib/ipkg
  
  	for fn in `ls ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/`; do
  		if [ -h ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/$fn ]; then
  			link=`readlink ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/$fn`
  			bname=`basename $link`
  			if [ ! -e $link -a -e ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/$bame ]; then
  				rm ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/$fn
  				ln -s $bname ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/$fn
  			fi
  		fi
  	done
  
  	mv ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/gcc ${SDK_OUTPUT}${prefix}/lib
  
  	echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/libpthread.so
  	echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/libc.so
  
  	# extract and store ipks, pkgdata and shlibs data
  	target_pkgs=`cat ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/usr/lib/ipkg/status | grep Package: | cut -f 2 -d ' '`
  	mkdir -p ${SDK_OUTPUT}/${prefix}/ipk/
  	mkdir -p ${SDK_OUTPUT}/${prefix}/pkgdata/runtime/
  	mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/shlibs/
  
negative.code: 
  	# add missing link to libgcc_s.so.1
  	# libgcc-dev should be responsible for that, but it's not getting built
  	# RP: it gets smashed up depending on the order that gcc, gcc-cross and 
  	# gcc-cross-sdk get built :( (30/11/07)
  	ln -sf libgcc_s.so.1 ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libgcc_s.so
  
  