* [PATCH 0/6] Added rpm support in meta-toolchain
@ 2011-01-27 2:51 Lianhao Lu
2011-01-27 2:51 ` [PATCH 1/6] cross-canadian/apt-native: support for debian package Lianhao Lu
` (6 more replies)
0 siblings, 7 replies; 13+ messages in thread
From: Lianhao Lu @ 2011-01-27 2:51 UTC (permalink / raw)
To: poky
From: Lianhao Lu <lianhao.lu@intel.com>
The purpose of this series of patches is to add rpm support in meta-toolchain creation,
and also to fix bug #227.
It makes the task populate_sdk in meta/recipes-core/meta/meta-toolchain.bb more generic
to support installing packages from ipk, rpm, and deb files in creating meta-toolchain
tarball, and move the populate_sdk task out of meta-toolchain.bb recipe into a bbclass.
It added populate_sdk_xxx.bbclass for different package file format.
The meta-toolchain installing process involes 2 set of packages, one is the host sdk
set which contains packages of applications(e.g. cross-canadian compilers, qemu, etc.) and
relevant run-time libraries, the other is the target sdk set which contains packages of target
arch's libraries and header files to create a target rootfs for cross compiling purpose.So
the patches also modifes and/or adds functions in package_deb.bbclass & package_rpm.bbclass
to update the package index and to generate different installing configuration files for the
tow different sets.
It also fixed a bug in cross-canadian.bbclass to enable the package_deb.bbclass generate correct
deb package files for cross-canadian recipies.
Pull URL: git://git.pokylinux.org/poky-contrib.git
Branch: llu/rpm_meta-toolchain
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=llu/rpm_meta-toolchain
Thanks,
Lianhao Lu <lianhao.lu@intel.com>
---
Lianhao Lu (6):
cross-canadian/apt-native: support for debian package.
classes/populate_sdk_ipk.bbclass: newly created.
populate_sdk_deb/package_deb: Added deb support for populate_sdk.
classes/populate_sdk_*: remove blanks.
package_rpm/populate_sdk_rpm: Added rpm support for populate_sdk
task.
meta_toolchain/populate_sdk: Made task populate_sdk more generic.
meta/classes/cross-canadian.bbclass | 3 +
meta/classes/package_deb.bbclass | 31 ++++++
meta/classes/package_rpm.bbclass | 53 ++++++++--
meta/classes/populate_sdk.bbclass | 88 +++++++++++++++
meta/classes/populate_sdk_deb.bbclass | 129 ++++++++++++++++++++++
meta/classes/populate_sdk_ipk.bbclass | 57 ++++++++++
meta/classes/populate_sdk_rpm.bbclass | 138 ++++++++++++++++++++++++
meta/recipes-core/meta/meta-toolchain.bb | 103 +-----------------
meta/recipes-devtools/apt/apt-native_0.7.14.bb | 2 +
9 files changed, 496 insertions(+), 108 deletions(-)
create mode 100644 meta/classes/populate_sdk.bbclass
create mode 100644 meta/classes/populate_sdk_deb.bbclass
create mode 100644 meta/classes/populate_sdk_ipk.bbclass
create mode 100644 meta/classes/populate_sdk_rpm.bbclass
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/6] cross-canadian/apt-native: support for debian package.
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
@ 2011-01-27 2:51 ` Lianhao Lu
2011-01-27 10:44 ` Joshua Lock
2011-01-27 2:51 ` [PATCH 4/6] classes/populate_sdk_*: remove blanks Lianhao Lu
` (5 subsequent siblings)
6 siblings, 1 reply; 13+ messages in thread
From: Lianhao Lu @ 2011-01-27 2:51 UTC (permalink / raw)
To: poky
From: Lianhao Lu <lianhao.lu@intel.com>
1. Set DPKG_ARCH in cross-canadian.bbclass to make debian package to be
generated with correct architecture.
2. Added licence checksum for apt-native.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
meta/classes/cross-canadian.bbclass | 3 +++
meta/recipes-devtools/apt/apt-native_0.7.14.bb | 2 ++
2 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index 993f831..1a045ba 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -43,6 +43,9 @@ HOST_OS = "${SDK_OS}"
HOST_PREFIX = "${SDK_PREFIX}"
HOST_CC_ARCH = "${SDK_CC_ARCH}"
+#assign DPKG_ARCH
+DPKG_ARCH = "${SDK_ARCH}"
+
CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
CFLAGS = "${BUILDSDK_CFLAGS}"
CXXFLAGS = "${BUILDSDK_CFLAGS}"
diff --git a/meta/recipes-devtools/apt/apt-native_0.7.14.bb b/meta/recipes-devtools/apt/apt-native_0.7.14.bb
index f77f817..b1bd55b 100644
--- a/meta/recipes-devtools/apt/apt-native_0.7.14.bb
+++ b/meta/recipes-devtools/apt/apt-native_0.7.14.bb
@@ -9,3 +9,5 @@ SRC_URI += "file://nodoc.patch \
SRC_URI[md5sum] = "19efa18fb1ef20c58b9b44e94258b814"
SRC_URI[sha256sum] = "8fc06effaf8a4e4333308eedcdc6840f1c8056f2e924210f151dfc076bcd4045"
+
+LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
--
1.7.0.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/6] classes/populate_sdk_ipk.bbclass: newly created.
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
` (2 preceding siblings ...)
2011-01-27 2:51 ` [PATCH 6/6] meta_toolchain/populate_sdk: Made task populate_sdk more generic Lianhao Lu
@ 2011-01-27 2:51 ` Lianhao Lu
2011-01-27 2:51 ` [PATCH 3/6] populate_sdk_deb/package_deb: Added deb support for populate_sdk Lianhao Lu
` (2 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Lianhao Lu @ 2011-01-27 2:51 UTC (permalink / raw)
To: poky
From: Lianhao Lu <lianhao.lu@intel.com>
Added ipk support for populate_sdk task.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
meta/classes/populate_sdk_ipk.bbclass | 57 +++++++++++++++++++++++++++++++++
1 files changed, 57 insertions(+), 0 deletions(-)
create mode 100644 meta/classes/populate_sdk_ipk.bbclass
diff --git a/meta/classes/populate_sdk_ipk.bbclass b/meta/classes/populate_sdk_ipk.bbclass
new file mode 100644
index 0000000..45b59f0
--- /dev/null
+++ b/meta/classes/populate_sdk_ipk.bbclass
@@ -0,0 +1,57 @@
+do_populate_sdk[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot"
+do_populate_sdk[recrdeptask] += "do_package_write_ipk"
+
+IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT} --force-overwrite"
+IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDKTARGETSYSROOT} --force-overwrite"
+
+fakeroot populate_sdk_ipk() {
+
+ mkdir -p ${SDK_OUTPUT}${localstatedir}/lib/opkg/
+ mkdir -p ${SDK_OUTPUT}/${SDKTARGETSYSROOT}${localstatedir}/lib/opkg/
+
+ rm -f ${IPKGCONF_TARGET}
+ touch ${IPKGCONF_TARGET}
+ rm -f ${IPKGCONF_SDK}
+ touch ${IPKGCONF_SDK}
+
+ package_update_index_ipk
+ package_generate_ipkg_conf
+
+ ${IPKG_HOST} update
+ ${IPKG_HOST} install ${TOOLCHAIN_HOST_TASK}
+
+ ${IPKG_TARGET} update
+ ${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
+
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg
+ mv ${SDK_OUTPUT}/var/lib/opkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg/
+ rm -Rf ${SDK_OUTPUT}/var
+
+ install -d ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}
+ install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}/
+
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
+ install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
+
+ populate_sdk_log_check
+}
+
+populate_sdk_ipk_log_check() {
+
+ lf_path="$1"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "exit 1" "Collected errors" ERR Fail
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
+ then
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
+ echo ""
+ do_exit=1
+ fi
+ done
+ test "$do_exit" = 1 && exit 1
+ true
+}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 6/6] meta_toolchain/populate_sdk: Made task populate_sdk more generic.
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
2011-01-27 2:51 ` [PATCH 1/6] cross-canadian/apt-native: support for debian package Lianhao Lu
2011-01-27 2:51 ` [PATCH 4/6] classes/populate_sdk_*: remove blanks Lianhao Lu
@ 2011-01-27 2:51 ` Lianhao Lu
2011-01-27 10:47 ` Joshua Lock
2011-01-27 2:51 ` [PATCH 2/6] classes/populate_sdk_ipk.bbclass: newly created Lianhao Lu
` (3 subsequent siblings)
6 siblings, 1 reply; 13+ messages in thread
From: Lianhao Lu @ 2011-01-27 2:51 UTC (permalink / raw)
To: poky
From: Lianhao Lu <lianhao.lu@intel.com>
Make the task populate_sdk more generic to support installing from all
ipk, rpm, and deb package format.
Also remove the .la files fixing in task populate_sdk code because the
libtool 2.4 now supports sysroot.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
meta/classes/populate_sdk.bbclass | 88 +++++++++++++++++++++++++
meta/classes/populate_sdk_rpm.bbclass | 6 +-
meta/recipes-core/meta/meta-toolchain.bb | 103 +-----------------------------
3 files changed, 94 insertions(+), 103 deletions(-)
create mode 100644 meta/classes/populate_sdk.bbclass
diff --git a/meta/classes/populate_sdk.bbclass b/meta/classes/populate_sdk.bbclass
new file mode 100644
index 0000000..02870a6
--- /dev/null
+++ b/meta/classes/populate_sdk.bbclass
@@ -0,0 +1,88 @@
+inherit meta toolchain-scripts
+inherit populate_sdk_${IMAGE_PKGTYPE}
+
+SDK_DIR = "${WORKDIR}/sdk"
+SDK_OUTPUT = "${SDK_DIR}/image"
+SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
+
+SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
+
+TOOLCHAIN_HOST_TASK ?= "task-sdk-host task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+TOOLCHAIN_TARGET_TASK ?= "task-poky-standalone-sdk-target task-poky-standalone-sdk-target-dbg"
+TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}"
+
+RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
+DEPENDS = "virtual/fakeroot-native sed-native"
+
+PID = "${@os.getpid()}"
+
+EXCLUDE_FROM_WORLD = "1"
+
+fakeroot do_populate_sdk() {
+ rm -rf ${SDK_OUTPUT}
+ mkdir -p ${SDK_OUTPUT}
+
+ populate_sdk_${IMAGE_PKGTYPE}
+
+ # Don't ship any libGL in the SDK
+ rm -rf ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/libGL*
+
+ # Can copy pstage files here
+ # target_pkgs=`cat ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/var/lib/opkg/status | grep Package: | cut -f 2 -d ' '`
+
+ # Fix or remove broken .la files
+ # no longer needed since libtool now support sysroot
+ #for i in `find ${SDK_OUTPUT}/${SDKTARGETSYSROOT} -name \*.la`; do
+ # sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${base_libdir},\1${SDKTARGETSYSROOT}${base_libdir},g" \
+ # -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${SDKTARGETSYSROOT}${libdir},g" \
+ # -e "/^dependency_libs=/s,\-\([LR]\)${base_libdir},-\1${SDKTARGETSYSROOT}${base_libdir},g" \
+ # -e "/^dependency_libs=/s,\-\([LR]\)${libdir},-\1${SDKTARGETSYSROOT}${libdir},g" \
+ # -e 's/^installed=yes$/installed=no/' $i
+ #done
+ #rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}/lib/*.la
+ rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
+
+ # Link the ld.so.cache file into the hosts filesystem
+ ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
+
+ # Setup site file for external use
+ siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS}
+ touch $siteconfig
+ for sitefile in ${CONFIG_SITE} ; do
+ cat $sitefile >> $siteconfig
+ done
+
+ toolchain_create_sdk_env_script
+
+ # Add version information
+ versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
+ touch $versionfile
+ echo 'Distro: ${DISTRO}' >> $versionfile
+ echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
+ echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
+ echo 'Timestamp: ${DATETIME}' >> $versionfile
+
+ # Package it up
+ mkdir -p ${SDK_DEPLOY}
+ cd ${SDK_OUTPUT}
+ tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
+}
+
+populate_sdk_log_check() {
+
+ lf_path="${WORKDIR}/temp/log.do_populate_sdk.${PID}"
+
+ echo "log_check: Using $lf_path as logfile"
+
+ if test -e "$lf_path"
+ then
+ populate_sdk_${IMAGE_PKGTYPE}_log_check $lf_path
+ else
+ echo "Cannot find logfile [$lf_path]"
+ fi
+ echo "Logfile is clean"
+}
+
+do_populate_sdk[nostamp] = "1"
+do_populate_sdk[recrdeptask] = "do_package_write"
+addtask populate_sdk before do_build after do_install
diff --git a/meta/classes/populate_sdk_rpm.bbclass b/meta/classes/populate_sdk_rpm.bbclass
index 883e67f..0e46341 100644
--- a/meta/classes/populate_sdk_rpm.bbclass
+++ b/meta/classes/populate_sdk_rpm.bbclass
@@ -29,7 +29,7 @@ populate_sdk_rpm_internal() {
confbase=$1
shift
package_to_install=$@
-
+
# Setup base system configuration
mkdir -p ${target_rootfs}/etc/rpm/
echo "${platform}" >${target_rootfs}/etc/rpm/platform
@@ -109,12 +109,12 @@ fakeroot populate_sdk_rpm () {
install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm
mv ${SDK_OUTPUT}${rpmlibdir}/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm/
rm -Rf ${SDK_OUTPUT}/var
-
+
install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
mv ${SDK_OUTPUT}/etc/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
rm -rf ${SDK_OUTPUT}/etc
- populate_sdk_log_check
+ populate_sdk_log_check
}
populate_sdk_rpm_log_check() {
diff --git a/meta/recipes-core/meta/meta-toolchain.bb b/meta/recipes-core/meta/meta-toolchain.bb
index 4aed9c2..feff9ac 100644
--- a/meta/recipes-core/meta/meta-toolchain.bb
+++ b/meta/recipes-core/meta/meta-toolchain.bb
@@ -1,106 +1,9 @@
DESCRIPTION = "Meta package for building a installable toolchain"
LICENSE = "MIT"
-DEPENDS = "opkg-native opkg-utils-native virtual/fakeroot-native sed-native"
+
+PR = "r1"
LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-inherit meta toolchain-scripts
-
-SDK_DIR = "${WORKDIR}/sdk"
-SDK_OUTPUT = "${SDK_DIR}/image"
-SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
-
-SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
-
-IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT} --force-overwrite"
-IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDKTARGETSYSROOT} --force-overwrite"
-
-TOOLCHAIN_HOST_TASK ?= "task-sdk-host task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
-TOOLCHAIN_TARGET_TASK ?= "task-poky-standalone-sdk-target task-poky-standalone-sdk-target-dbg"
-TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}"
-
-RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
-
-EXCLUDE_FROM_WORLD = "1"
-
-do_populate_sdk() {
- rm -rf ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}
- mkdir -p ${SDK_OUTPUT}${localstatedir}/lib/opkg/
- mkdir -p ${SDK_OUTPUT}/${SDKTARGETSYSROOT}${localstatedir}/lib/opkg/
-
- rm -f ${IPKGCONF_TARGET}
- touch ${IPKGCONF_TARGET}
- rm -f ${IPKGCONF_SDK}
- touch ${IPKGCONF_SDK}
-
- package_update_index_ipk
- package_generate_ipkg_conf
-
- for arch in ${PACKAGE_ARCHS}; do
- revipkgarchs="$arch $revipkgarchs"
- done
-
- ${IPKG_HOST} update
- ${IPKG_HOST} install ${TOOLCHAIN_HOST_TASK}
-
- ${IPKG_TARGET} update
- ${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
-
- install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg
- mv ${SDK_OUTPUT}/var/lib/opkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg/
- rm -Rf ${SDK_OUTPUT}/var
-
- # Don't ship any libGL in the SDK
- rm -rf ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/libGL*
-
- install -d ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}
- install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}/
-
- install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
- install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
-
- # Can copy pstage files here
- # target_pkgs=`cat ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/var/lib/opkg/status | grep Package: | cut -f 2 -d ' '`
-
- # Fix or remove broken .la files
- for i in `find ${SDK_OUTPUT}/${SDKTARGETSYSROOT} -name \*.la`; do
- sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${base_libdir},\1${SDKTARGETSYSROOT}${base_libdir},g" \
- -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${SDKTARGETSYSROOT}${libdir},g" \
- -e "/^dependency_libs=/s,\-\([LR]\)${base_libdir},-\1${SDKTARGETSYSROOT}${base_libdir},g" \
- -e "/^dependency_libs=/s,\-\([LR]\)${libdir},-\1${SDKTARGETSYSROOT}${libdir},g" \
- -e 's/^installed=yes$/installed=no/' $i
- done
- #rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}/lib/*.la
- rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
-
- # Link the ld.so.cache file into the hosts filesystem
- ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
-
- # Setup site file for external use
- siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS}
- touch $siteconfig
- for sitefile in ${CONFIG_SITE} ; do
- cat $sitefile >> $siteconfig
- done
-
- toolchain_create_sdk_env_script
-
- # Add version information
- versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
- touch $versionfile
- echo 'Distro: ${DISTRO}' >> $versionfile
- echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
- echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
- echo 'Timestamp: ${DATETIME}' >> $versionfile
-
- # Package it up
- mkdir -p ${SDK_DEPLOY}
- cd ${SDK_OUTPUT}
- tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
-}
-
-do_populate_sdk[nostamp] = "1"
-do_populate_sdk[recrdeptask] = "do_package_write"
-addtask populate_sdk before do_build after do_install
+inherit populate_sdk
--
1.7.0.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 4/6] classes/populate_sdk_*: remove blanks.
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
2011-01-27 2:51 ` [PATCH 1/6] cross-canadian/apt-native: support for debian package Lianhao Lu
@ 2011-01-27 2:51 ` Lianhao Lu
2011-01-27 10:46 ` Joshua Lock
2011-01-27 2:51 ` [PATCH 6/6] meta_toolchain/populate_sdk: Made task populate_sdk more generic Lianhao Lu
` (4 subsequent siblings)
6 siblings, 1 reply; 13+ messages in thread
From: Lianhao Lu @ 2011-01-27 2:51 UTC (permalink / raw)
To: poky
From: Lianhao Lu <lianhao.lu@intel.com>
Remove unnecessary blanks introduced in commit
2fc923582dbf15d1a694c0f7764f48e97b30116a and
6af64af67102945a08e640e1100ea14831c6d794.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
meta/classes/populate_sdk_deb.bbclass | 22 +++++++++++-----------
meta/classes/populate_sdk_ipk.bbclass | 6 +++---
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/meta/classes/populate_sdk_deb.bbclass b/meta/classes/populate_sdk_deb.bbclass
index 356f409..abcb000 100644
--- a/meta/classes/populate_sdk_deb.bbclass
+++ b/meta/classes/populate_sdk_deb.bbclass
@@ -2,7 +2,7 @@ do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot apt-native:do_popul
do_populate_sdk[recrdeptask] += "do_package_write_deb"
generate_generate_deb_conf () {
-
+
rootfs=$1
dpkg_arch=$2
shift
@@ -22,7 +22,7 @@ generate_generate_deb_conf () {
if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then
continue;
fi
-
+
echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
(echo "Package: *"
echo "Pin: release l=$arch"
@@ -79,9 +79,9 @@ populate_sdk_post_deb () {
}
fakeroot populate_sdk_deb () {
-
+
package_update_index_deb
-
+
set -x
#install target
generate_generate_deb_conf ${SDK_OUTPUT}/${SDKTARGETSYSROOT} ${DPKG_ARCH} ${PACKAGE_ARCHS}
@@ -100,13 +100,13 @@ fakeroot populate_sdk_deb () {
generate_generate_deb_conf ${SDK_OUTPUT} ${SDK_ARCH} ${sdkarchs}
populate_sdk_deb_internal ${SDK_OUTPUT} ${TOOLCHAIN_HOST_TASK}
populate_sdk_post_deb ${SDK_OUTPUT}/${SDKPATHNATIVE}
-
+
#move remainings
- install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/dpkg
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/dpkg
mv ${SDK_OUTPUT}/var/dpkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/dpkg
- rm -rf ${SDK_OUTPUT}/var
-
- populate_sdk_log_check
+ rm -rf ${SDK_OUTPUT}/var
+
+ populate_sdk_log_check
}
populate_sdk_deb_log_check() {
@@ -114,7 +114,7 @@ populate_sdk_deb_log_check() {
lf_txt="`cat $lf_path`"
for keyword_die in "E:"
- do
+ do
if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
then
echo "log_check: There were error messages in the logfile"
@@ -124,6 +124,6 @@ populate_sdk_deb_log_check() {
do_exit=1
fi
done
- test "$do_exit" = 1 && exit 1
+ test "$do_exit" = 1 && exit 1
true
}
diff --git a/meta/classes/populate_sdk_ipk.bbclass b/meta/classes/populate_sdk_ipk.bbclass
index 45b59f0..57502ec 100644
--- a/meta/classes/populate_sdk_ipk.bbclass
+++ b/meta/classes/populate_sdk_ipk.bbclass
@@ -33,7 +33,7 @@ fakeroot populate_sdk_ipk() {
install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
- populate_sdk_log_check
+ populate_sdk_log_check
}
populate_sdk_ipk_log_check() {
@@ -42,14 +42,14 @@ populate_sdk_ipk_log_check() {
lf_txt="`cat $lf_path`"
for keyword_die in "exit 1" "Collected errors" ERR Fail
- do
+ do
if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
then
echo "log_check: There were error messages in the logfile"
echo -e "log_check: Matched keyword: [$keyword_die]\n"
echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
echo ""
- do_exit=1
+ do_exit=1
fi
done
test "$do_exit" = 1 && exit 1
--
1.7.0.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/6] populate_sdk_deb/package_deb: Added deb support for populate_sdk.
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
` (3 preceding siblings ...)
2011-01-27 2:51 ` [PATCH 2/6] classes/populate_sdk_ipk.bbclass: newly created Lianhao Lu
@ 2011-01-27 2:51 ` Lianhao Lu
2011-01-27 2:51 ` [PATCH 5/6] package_rpm/populate_sdk_rpm: Added rpm support for populate_sdk task Lianhao Lu
2011-01-27 22:03 ` [PATCH 0/6] Added rpm support in meta-toolchain Richard Purdie
6 siblings, 0 replies; 13+ messages in thread
From: Lianhao Lu @ 2011-01-27 2:51 UTC (permalink / raw)
To: poky
From: Lianhao Lu <lianhao.lu@intel.com>
Added populate_sdk_deb.bbclass for populate_sdk task.
Added function package_update_index_deb in package_deb.bbclass to
generate deb index.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
meta/classes/package_deb.bbclass | 31 ++++++++
meta/classes/populate_sdk_deb.bbclass | 129 +++++++++++++++++++++++++++++++++
2 files changed, 160 insertions(+), 0 deletions(-)
create mode 100644 meta/classes/populate_sdk_deb.bbclass
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 29dcc5c..b1c601e 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -67,6 +67,37 @@ python do_package_deb_install () {
os.putenv('PATH', path)
}
+#
+# Update the Packages index files in ${DEPLOY_DIR_DEB}
+#
+package_update_index_deb () {
+
+ debarchs=""
+
+ if [ ! -z "${DEPLOY_KEEP_PACKAGES}" ]; then
+ return
+ fi
+
+ for arch in ${PACKAGE_ARCHS}; do
+ sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
+ if [ -e ${DEPLOY_DIR_DEB}/$arch ]; then
+ debarchs="$debarchs $arch"
+ fi
+ if [ -e ${DEPLOY_DIR_DEB}/$sdkarch-nativesdk ]; then
+ debarchs="$debarchs $sdkarch-nativesdk"
+ fi
+ done
+
+ for arch in $debarchs; do
+ if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then
+ continue;
+ fi
+ cd ${DEPLOY_DIR_DEB}/$arch
+ dpkg-scanpackages . | bzip2 > Packages.bz2
+ echo "Label: $arch" > Release
+ done
+}
+
python do_package_deb () {
import re, copy
import textwrap
diff --git a/meta/classes/populate_sdk_deb.bbclass b/meta/classes/populate_sdk_deb.bbclass
new file mode 100644
index 0000000..356f409
--- /dev/null
+++ b/meta/classes/populate_sdk_deb.bbclass
@@ -0,0 +1,129 @@
+do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot bzip2-native:do_populate_sysroot"
+do_populate_sdk[recrdeptask] += "do_package_write_deb"
+
+generate_generate_deb_conf () {
+
+ rootfs=$1
+ dpkg_arch=$2
+ shift
+ shift
+
+ archs=$@
+
+ echo "rootfs: $rootfs"
+ echo "dpkg_arch: $dpkg_arch"
+ echo "debarchs: $archs"
+
+ rm -f ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
+ rm -f ${STAGING_ETCDIR_NATIVE}/apt/preferences
+
+ priority=1
+ for arch in $archs; do
+ if [ ! -d ${DEPLOY_DIR_DEB}/$arch ]; then
+ continue;
+ fi
+
+ echo "deb file:${DEPLOY_DIR_DEB}/$arch/ ./" >> ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
+ (echo "Package: *"
+ echo "Pin: release l=$arch"
+ echo "Pin-Priority: $(expr 800 + $priority)"
+ echo) >> ${STAGING_ETCDIR_NATIVE}/apt/preferences
+ priority=$(expr $priority + 5)
+ done
+
+ tac ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev > ${STAGING_ETCDIR_NATIVE}/apt/sources.list
+
+ cat "${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample" \
+ | sed -e "s#Architecture \".*\";#Architecture \"${dpkg_arch}\";#" \
+ | sed -e "s:#ROOTFS#:${rootfs}:g" \
+ > "${STAGING_ETCDIR_NATIVE}/apt/apt-populate-sdk.conf"
+
+ export APT_CONFIG="${STAGING_ETCDIR_NATIVE}/apt/apt-populate-sdk.conf"
+}
+
+populate_sdk_deb_internal () {
+
+ target_rootfs=$1
+ shift
+ package_to_install=$@
+
+ mkdir -p ${target_rootfs}/var/dpkg/info
+ mkdir -p ${target_rootfs}/var/dpkg/updates
+
+ > ${target_rootfs}/var/dpkg/status
+ > ${target_rootfs}/var/dpkg/available
+
+ apt-get update
+
+ for i in ${package_to_install}; do
+ apt-get install $i --force-yes --allow-unauthenticated
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ done
+
+ find ${target_rootfs} -name \*.dpkg-new | for i in `cat`; do
+ mv $i `echo $i | sed -e's,\.dpkg-new$,,'`
+ done
+
+ # Mark all packages installed
+ sed -i -e "s/Status: install ok unpacked/Status: install ok installed/;" ${target_rootfs}/var/dpkg/status
+
+}
+
+populate_sdk_post_deb () {
+
+ target_rootfs=$1
+
+ cp -r ${STAGING_ETCDIR_NATIVE}/apt ${target_rootfs}/etc
+}
+
+fakeroot populate_sdk_deb () {
+
+ package_update_index_deb
+
+ set -x
+ #install target
+ generate_generate_deb_conf ${SDK_OUTPUT}/${SDKTARGETSYSROOT} ${DPKG_ARCH} ${PACKAGE_ARCHS}
+ populate_sdk_deb_internal ${SDK_OUTPUT}/${SDKTARGETSYSROOT} ${TOOLCHAIN_TARGET_TASK}
+ populate_sdk_post_deb ${SDK_OUTPUT}/${SDKTARGETSYSROOT}
+
+ #install host
+ sdkarchs=""
+ for arch in ${PACKAGE_ARCHS}; do
+ sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
+ if [ -e ${DEPLOY_DIR_DEB}/$sdkarch-nativesdk ]; then
+ sdkarchs="$sdkarchs $sdkarch-nativesdk"
+ fi
+ done
+
+ generate_generate_deb_conf ${SDK_OUTPUT} ${SDK_ARCH} ${sdkarchs}
+ populate_sdk_deb_internal ${SDK_OUTPUT} ${TOOLCHAIN_HOST_TASK}
+ populate_sdk_post_deb ${SDK_OUTPUT}/${SDKPATHNATIVE}
+
+ #move remainings
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/dpkg
+ mv ${SDK_OUTPUT}/var/dpkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/dpkg
+ rm -rf ${SDK_OUTPUT}/var
+
+ populate_sdk_log_check
+}
+
+populate_sdk_deb_log_check() {
+ lf_path="$1"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "E:"
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
+ then
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
+ echo ""
+ do_exit=1
+ fi
+ done
+ test "$do_exit" = 1 && exit 1
+ true
+}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 5/6] package_rpm/populate_sdk_rpm: Added rpm support for populate_sdk task.
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
` (4 preceding siblings ...)
2011-01-27 2:51 ` [PATCH 3/6] populate_sdk_deb/package_deb: Added deb support for populate_sdk Lianhao Lu
@ 2011-01-27 2:51 ` Lianhao Lu
2011-01-27 10:46 ` Joshua Lock
2011-01-27 22:03 ` [PATCH 0/6] Added rpm support in meta-toolchain Richard Purdie
6 siblings, 1 reply; 13+ messages in thread
From: Lianhao Lu @ 2011-01-27 2:51 UTC (permalink / raw)
To: poky
From: Lianhao Lu <lianhao.lu@intel.com>
1. Added popluate_sdk_rpm.bbclass to add rpm support for populate_sdk
task.
2. Modified the function package_update_index_rpm() &
package_generate_rpm_conf in package_rpm.bbclass to generate 2 different
configurations for sdk host and sdk target.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
meta/classes/package_rpm.bbclass | 53 +++++++++++--
meta/classes/populate_sdk_rpm.bbclass | 138 +++++++++++++++++++++++++++++++++
2 files changed, 183 insertions(+), 8 deletions(-)
create mode 100644 meta/classes/populate_sdk_rpm.bbclass
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index fbe0626..abcb340 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -15,6 +15,8 @@ python package_rpm_install () {
bb.fatal("package_rpm_install not implemented!")
}
+RPMCONF_TARGET_BASE = "${DEPLOY_DIR_RPM}/solvedb"
+RPMCONF_HOST_BASE = "${DEPLOY_DIR_RPM}/solvedb-sdk"
#
# Update the Packages depsolver db in ${DEPLOY_DIR_RPM}
#
@@ -26,15 +28,20 @@ package_update_index_rpm () {
fi
packagedirs=""
+ packagedirs_sdk=""
for arch in $rpmarchs ; do
sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
+ extension="-nativesdk"
+ if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then
+ extension=""
+ fi
packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/$arch"
- #packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/$sdkarch-nativesdk"
+ packagedirs_sdk="$packagedirs_sdk ${DEPLOY_DIR_RPM}/$sdkarch$extension"
done
#packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/${SDK_ARCH}-${TARGET_ARCH}-canadian"
- cat /dev/null > ${DEPLOY_DIR_RPM}/solvedb.conf
+ cat /dev/null > ${RPMCONF_TARGET_BASE}.conf
for pkgdir in $packagedirs; do
if [ -e $pkgdir/ ]; then
echo "Generating solve db for $pkgdir..."
@@ -49,7 +56,26 @@ package_update_index_rpm () {
-D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" \
-D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
$pkgdir/solvedb/manifest
- echo $pkgdir/solvedb >> ${DEPLOY_DIR_RPM}/solvedb.conf
+ echo $pkgdir/solvedb >> ${RPMCONF_TARGET_BASE}.conf
+ fi
+ done
+
+ cat /dev/null > ${RPMCONF_HOST_BASE}.conf
+ for pkgdir in $packagedirs_sdk; do
+ if [ -e $pkgdir/ ]; then
+ echo "Generating solve db for $pkgdir..."
+ rm -rf $pkgdir/solvedb
+ mkdir -p $pkgdir/solvedb
+ echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest
+ find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest
+ ${RPM} -i --replacepkgs --replacefiles --oldpackage \
+ -D "_dbpath $pkgdir/solvedb" --justdb \
+ --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \
+ --ignoresize --nosignature --nodigest \
+ -D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" \
+ -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
+ $pkgdir/solvedb/manifest
+ echo $pkgdir/solvedb >> ${RPMCONF_HOST_BASE}.conf
fi
done
}
@@ -59,16 +85,27 @@ package_update_index_rpm () {
# generated depsolver db's...
#
package_generate_rpm_conf () {
- printf "_solve_dbpath " > ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro
+ colon=false
+ for each in `cat ${RPMCONF_TARGET_BASE}.conf` ; do
+ if [ "$colon" == true ]; then
+ printf ":" >> ${RPMCONF_TARGET_BASE}.macro
+ fi
+ printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro
+ colon=true
+ done
+ printf "\n" >> ${RPMCONF_TARGET_BASE}.macro
+
+ printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}.macro
colon=false
- for each in `cat ${DEPLOY_DIR_RPM}/solvedb.conf` ; do
+ for each in `cat ${RPMCONF_HOST_BASE}.conf` ; do
if [ "$colon" == true ]; then
- printf ":" >> ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf ":" >> ${RPMCONF_HOST_BASE}.macro
fi
- printf "%s" $each >> ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro
colon=true
done
- printf "\n" >> ${DEPLOY_DIR_RPM}/solvedb.macro
+ printf "\n" >> ${RPMCONF_HOST_BASE}.macro
}
python write_specfile () {
diff --git a/meta/classes/populate_sdk_rpm.bbclass b/meta/classes/populate_sdk_rpm.bbclass
new file mode 100644
index 0000000..883e67f
--- /dev/null
+++ b/meta/classes/populate_sdk_rpm.bbclass
@@ -0,0 +1,138 @@
+do_populate_sdk[depends] += "rpm-native:do_populate_sysroot"
+do_populate_sdk[recrdeptask] += "do_package_write_rpm"
+
+rpmlibdir = "/var/lib/rpm"
+RPMOPTS="--dbpath ${rpmlibdir} --define='_openall_before_chroot 1'"
+RPM="rpm ${RPMOPTS}"
+
+# Resolve package names to filepaths
+resolve_package() {
+ pkg="$1"
+ conffile="$2"
+ pkg_name=""
+ for solve in `cat ${conffile}`; do
+ pkg_name=$(${RPM} -D "_dbpath $solve" -D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" -q --yaml $pkg | grep -i 'Packageorigin' | cut -d : -f 2)
+ if [ -n "$pkg_name" ]; then
+ break;
+ fi
+ done
+ echo $pkg_name
+}
+
+# populate_sdk_rpm_internal <rootfs> <platform> <confbase> <packages_to_install>
+populate_sdk_rpm_internal() {
+
+ target_rootfs=$1
+ shift
+ platform=$1
+ shift
+ confbase=$1
+ shift
+ package_to_install=$@
+
+ # Setup base system configuration
+ mkdir -p ${target_rootfs}/etc/rpm/
+ echo "${platform}" >${target_rootfs}/etc/rpm/platform
+
+ # Tell RPM that the "/" directory exist and is available
+ mkdir -p ${target_rootfs}/etc/rpm/sysinfo
+ echo "/" >${target_rootfs}/etc/rpm/sysinfo/Dirnames
+ echo "/bin/sh" >${target_rootfs}/etc/rpm/sysinfo/Providename
+
+ # Setup manifest of packages to install...
+ mkdir -p ${target_rootfs}/install
+ echo "# Install manifest" > ${target_rootfs}/install/install.manifest
+
+ if [ ! -z "${package_to_install}" ]; then
+ for pkg in ${package_to_install} ; do
+ echo "Processing $pkg..."
+ pkg_name=$(resolve_package $pkg ${confbase}.conf)
+ if [ -z "$pkg_name" ]; then
+ echo "Unable to find package $pkg!"
+ exit 1
+ fi
+ echo $pkg_name >> ${target_rootfs}/install/install.manifest
+ done
+ fi
+
+ # Generate an install solution by doing a --justdb install, then recreate it with
+ # an actual package install!
+ set -e
+ ${RPM} -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
+ -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
+ -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
+ -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
+ ${target_rootfs}/install/install.manifest
+
+ # Now that we have a solution, pull out a list of what to install...
+ echo "Manifest: ${target_rootfs}/install/install-target.manifest"
+ ${RPM} -D "_dbpath ${target_rootfs}/install" \
+ -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" -qa --yaml \
+ | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_solution.manifest
+
+ # Attempt install
+ ${RPM} --root ${target_rootfs} \
+ -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
+ -D "_dbpath ${rpmlibdir}" \
+ --noscripts --notriggers --noparentdirs --nolinktos \
+ -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync private" \
+ -Uhv ${target_rootfs}/install/install_solution.manifest
+ set +e
+
+ # remove lock files
+ rm -f ${target_rootfs}/__db.*
+
+ # Move manifests into the directory with the logs
+ mv ${target_rootfs}/install/*.manifest ${T}/
+
+ # Remove all remaining resolver files
+ rm -rf ${target_rootfs}/install
+}
+
+fakeroot populate_sdk_rpm () {
+
+ package_update_index_rpm
+ package_generate_rpm_conf
+
+ #install target
+ populate_sdk_rpm_internal ${SDK_OUTPUT}/${SDKTARGETSYSROOT} \
+ ${TARGET_ARCH}-linux \
+ ${RPMCONF_TARGET_BASE} \
+ ${TOOLCHAIN_TARGET_TASK}
+ #install host
+ populate_sdk_rpm_internal ${SDK_OUTPUT} \
+ "${SDK_ARCH}-nativesdk-linux" \
+ ${RPMCONF_HOST_BASE} \
+ ${TOOLCHAIN_HOST_TASK}
+
+ # move host RPM library data
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm
+ mv ${SDK_OUTPUT}${rpmlibdir}/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm/
+ rm -Rf ${SDK_OUTPUT}/var
+
+ install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
+ mv ${SDK_OUTPUT}/etc/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
+ rm -rf ${SDK_OUTPUT}/etc
+
+ populate_sdk_log_check
+}
+
+populate_sdk_rpm_log_check() {
+
+ lf_path="$1"
+
+ lf_txt="`cat $lf_path`"
+ for keyword_die in "Cannot find package" "exit 1" ERR Fail
+ do
+ if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
+ then
+ echo "log_check: There were error messages in the logfile"
+ echo -e "log_check: Matched keyword: [$keyword_die]\n"
+ echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
+ echo ""
+ do_exit=1
+ fi
+ done
+ test "$do_exit" = 1 && exit 1
+ true
+}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/6] cross-canadian/apt-native: support for debian package.
2011-01-27 2:51 ` [PATCH 1/6] cross-canadian/apt-native: support for debian package Lianhao Lu
@ 2011-01-27 10:44 ` Joshua Lock
0 siblings, 0 replies; 13+ messages in thread
From: Joshua Lock @ 2011-01-27 10:44 UTC (permalink / raw)
To: poky
On Thu, 2011-01-27 at 10:51 +0800, Lianhao Lu wrote:
> From: Lianhao Lu <lianhao.lu@intel.com>
>
> 1. Set DPKG_ARCH in cross-canadian.bbclass to make debian package to be
> generated with correct architecture.
>
> 2. Added licence checksum for apt-native.
This should be two patches please as it's two unrelated changed.
Cheers,
Joshua
--
Joshua Lock
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/6] classes/populate_sdk_*: remove blanks.
2011-01-27 2:51 ` [PATCH 4/6] classes/populate_sdk_*: remove blanks Lianhao Lu
@ 2011-01-27 10:46 ` Joshua Lock
0 siblings, 0 replies; 13+ messages in thread
From: Joshua Lock @ 2011-01-27 10:46 UTC (permalink / raw)
To: poky
On Thu, 2011-01-27 at 10:51 +0800, Lianhao Lu wrote:
> From: Lianhao Lu <lianhao.lu@intel.com>
>
> Remove unnecessary blanks introduced in commit
> 2fc923582dbf15d1a694c0f7764f48e97b30116a and
> 6af64af67102945a08e640e1100ea14831c6d794.
These changes should be squashed into the patches which introduce the
whitespace, this sort of thing is only necessary as a separate commit
once the changes are in master.
git rebase (and its interactive mode) are useful for tidying up a
branch before submitting a pull request.
http://book.git-scm.com/4_interactive_rebasing.html
Cheers,
Joshua
--
Joshua Lock
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 5/6] package_rpm/populate_sdk_rpm: Added rpm support for populate_sdk task.
2011-01-27 2:51 ` [PATCH 5/6] package_rpm/populate_sdk_rpm: Added rpm support for populate_sdk task Lianhao Lu
@ 2011-01-27 10:46 ` Joshua Lock
0 siblings, 0 replies; 13+ messages in thread
From: Joshua Lock @ 2011-01-27 10:46 UTC (permalink / raw)
To: poky
On Thu, 2011-01-27 at 10:51 +0800, Lianhao Lu wrote:
> From: Lianhao Lu <lianhao.lu@intel.com>
>
> 1. Added popluate_sdk_rpm.bbclass to add rpm support for populate_sdk
> task.
>
> 2. Modified the function package_update_index_rpm() &
> package_generate_rpm_conf in package_rpm.bbclass to generate 2 different
> configurations for sdk host and sdk target.
>
> Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
> ---
> meta/classes/package_rpm.bbclass | 53 +++++++++++--
> meta/classes/populate_sdk_rpm.bbclass | 138 +++++++++++++++++++++++++++++++++
> 2 files changed, 183 insertions(+), 8 deletions(-)
> create mode 100644 meta/classes/populate_sdk_rpm.bbclass
>
> diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
> index fbe0626..abcb340 100644
> --- a/meta/classes/package_rpm.bbclass
> +++ b/meta/classes/package_rpm.bbclass
> @@ -15,6 +15,8 @@ python package_rpm_install () {
> bb.fatal("package_rpm_install not implemented!")
> }
>
> +RPMCONF_TARGET_BASE = "${DEPLOY_DIR_RPM}/solvedb"
> +RPMCONF_HOST_BASE = "${DEPLOY_DIR_RPM}/solvedb-sdk"
> #
> # Update the Packages depsolver db in ${DEPLOY_DIR_RPM}
> #
> @@ -26,15 +28,20 @@ package_update_index_rpm () {
> fi
>
> packagedirs=""
> + packagedirs_sdk=""
> for arch in $rpmarchs ; do
> sdkarch=`echo $arch | sed -e 's/${HOST_ARCH}/${SDK_ARCH}/'`
> + extension="-nativesdk"
> + if [ "$sdkarch" = "all" -o "$sdkarch" = "any" -o "$sdkarch" = "noarch" ]; then
> + extension=""
> + fi
> packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/$arch"
> - #packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/$sdkarch-nativesdk"
> + packagedirs_sdk="$packagedirs_sdk ${DEPLOY_DIR_RPM}/$sdkarch$extension"
> done
>
> #packagedirs="$packagedirs ${DEPLOY_DIR_RPM}/${SDK_ARCH}-${TARGET_ARCH}-canadian"
>
> - cat /dev/null > ${DEPLOY_DIR_RPM}/solvedb.conf
> + cat /dev/null > ${RPMCONF_TARGET_BASE}.conf
> for pkgdir in $packagedirs; do
> if [ -e $pkgdir/ ]; then
> echo "Generating solve db for $pkgdir..."
> @@ -49,7 +56,26 @@ package_update_index_rpm () {
> -D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" \
> -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
> $pkgdir/solvedb/manifest
> - echo $pkgdir/solvedb >> ${DEPLOY_DIR_RPM}/solvedb.conf
> + echo $pkgdir/solvedb >> ${RPMCONF_TARGET_BASE}.conf
> + fi
> + done
> +
> + cat /dev/null > ${RPMCONF_HOST_BASE}.conf
> + for pkgdir in $packagedirs_sdk; do
> + if [ -e $pkgdir/ ]; then
> + echo "Generating solve db for $pkgdir..."
> + rm -rf $pkgdir/solvedb
> + mkdir -p $pkgdir/solvedb
> + echo "# Dynamically generated solve manifest" >> $pkgdir/solvedb/manifest
> + find $pkgdir -maxdepth 1 -type f >> $pkgdir/solvedb/manifest
> + ${RPM} -i --replacepkgs --replacefiles --oldpackage \
> + -D "_dbpath $pkgdir/solvedb" --justdb \
> + --noaid --nodeps --noorder --noscripts --notriggers --noparentdirs --nolinktos --stats \
> + --ignoresize --nosignature --nodigest \
> + -D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" \
> + -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
> + $pkgdir/solvedb/manifest
> + echo $pkgdir/solvedb >> ${RPMCONF_HOST_BASE}.conf
> fi
> done
> }
> @@ -59,16 +85,27 @@ package_update_index_rpm () {
> # generated depsolver db's...
> #
> package_generate_rpm_conf () {
> - printf "_solve_dbpath " > ${DEPLOY_DIR_RPM}/solvedb.macro
> + printf "_solve_dbpath " > ${RPMCONF_TARGET_BASE}.macro
> + colon=false
> + for each in `cat ${RPMCONF_TARGET_BASE}.conf` ; do
> + if [ "$colon" == true ]; then
> + printf ":" >> ${RPMCONF_TARGET_BASE}.macro
> + fi
> + printf "%s" $each >> ${RPMCONF_TARGET_BASE}.macro
> + colon=true
> + done
> + printf "\n" >> ${RPMCONF_TARGET_BASE}.macro
> +
> + printf "_solve_dbpath " > ${RPMCONF_HOST_BASE}.macro
> colon=false
> - for each in `cat ${DEPLOY_DIR_RPM}/solvedb.conf` ; do
> + for each in `cat ${RPMCONF_HOST_BASE}.conf` ; do
> if [ "$colon" == true ]; then
> - printf ":" >> ${DEPLOY_DIR_RPM}/solvedb.macro
> + printf ":" >> ${RPMCONF_HOST_BASE}.macro
> fi
> - printf "%s" $each >> ${DEPLOY_DIR_RPM}/solvedb.macro
> + printf "%s" $each >> ${RPMCONF_HOST_BASE}.macro
> colon=true
> done
> - printf "\n" >> ${DEPLOY_DIR_RPM}/solvedb.macro
> + printf "\n" >> ${RPMCONF_HOST_BASE}.macro
> }
>
> python write_specfile () {
> diff --git a/meta/classes/populate_sdk_rpm.bbclass b/meta/classes/populate_sdk_rpm.bbclass
> new file mode 100644
> index 0000000..883e67f
> --- /dev/null
> +++ b/meta/classes/populate_sdk_rpm.bbclass
> @@ -0,0 +1,138 @@
> +do_populate_sdk[depends] += "rpm-native:do_populate_sysroot"
> +do_populate_sdk[recrdeptask] += "do_package_write_rpm"
> +
> +rpmlibdir = "/var/lib/rpm"
Bonus points if you change this for a layout variable:
${localstatedir}/lib/rpm ?
> +RPMOPTS="--dbpath ${rpmlibdir} --define='_openall_before_chroot 1'"
> +RPM="rpm ${RPMOPTS}"
> +
> +# Resolve package names to filepaths
> +resolve_package() {
> + pkg="$1"
> + conffile="$2"
> + pkg_name=""
> + for solve in `cat ${conffile}`; do
> + pkg_name=$(${RPM} -D "_dbpath $solve" -D "_dbi_tags_3 Packages:Name:Basenames:Providename:Nvra" -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" -q --yaml $pkg | grep -i 'Packageorigin' | cut -d : -f 2)
> + if [ -n "$pkg_name" ]; then
> + break;
> + fi
> + done
> + echo $pkg_name
> +}
> +
> +# populate_sdk_rpm_internal <rootfs> <platform> <confbase> <packages_to_install>
> +populate_sdk_rpm_internal() {
> +
> + target_rootfs=$1
> + shift
> + platform=$1
> + shift
> + confbase=$1
> + shift
> + package_to_install=$@
> +
> + # Setup base system configuration
> + mkdir -p ${target_rootfs}/etc/rpm/
> + echo "${platform}" >${target_rootfs}/etc/rpm/platform
> +
> + # Tell RPM that the "/" directory exist and is available
> + mkdir -p ${target_rootfs}/etc/rpm/sysinfo
> + echo "/" >${target_rootfs}/etc/rpm/sysinfo/Dirnames
> + echo "/bin/sh" >${target_rootfs}/etc/rpm/sysinfo/Providename
${sysconfdir} in here?
> +
> + # Setup manifest of packages to install...
> + mkdir -p ${target_rootfs}/install
> + echo "# Install manifest" > ${target_rootfs}/install/install.manifest
> +
> + if [ ! -z "${package_to_install}" ]; then
> + for pkg in ${package_to_install} ; do
> + echo "Processing $pkg..."
> + pkg_name=$(resolve_package $pkg ${confbase}.conf)
> + if [ -z "$pkg_name" ]; then
> + echo "Unable to find package $pkg!"
> + exit 1
> + fi
> + echo $pkg_name >> ${target_rootfs}/install/install.manifest
> + done
> + fi
> +
> + # Generate an install solution by doing a --justdb install, then recreate it with
> + # an actual package install!
> + set -e
> + ${RPM} -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
> + -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \
> + -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" \
> + -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
> + ${target_rootfs}/install/install.manifest
> +
> + # Now that we have a solution, pull out a list of what to install...
> + echo "Manifest: ${target_rootfs}/install/install-target.manifest"
> + ${RPM} -D "_dbpath ${target_rootfs}/install" \
> + -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync" -qa --yaml \
> + | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_solution.manifest
> +
> + # Attempt install
> + ${RPM} --root ${target_rootfs} \
> + -D "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \
> + -D "_dbpath ${rpmlibdir}" \
> + --noscripts --notriggers --noparentdirs --nolinktos \
> + -D "__dbi_cdb create mp_mmapsize=128Mb mp_size=1Mb nofsync private" \
> + -Uhv ${target_rootfs}/install/install_solution.manifest
> + set +e
> +
> + # remove lock files
> + rm -f ${target_rootfs}/__db.*
> +
> + # Move manifests into the directory with the logs
> + mv ${target_rootfs}/install/*.manifest ${T}/
> +
> + # Remove all remaining resolver files
> + rm -rf ${target_rootfs}/install
> +}
> +
> +fakeroot populate_sdk_rpm () {
> +
> + package_update_index_rpm
> + package_generate_rpm_conf
> +
> + #install target
> + populate_sdk_rpm_internal ${SDK_OUTPUT}/${SDKTARGETSYSROOT} \
> + ${TARGET_ARCH}-linux \
> + ${RPMCONF_TARGET_BASE} \
> + ${TOOLCHAIN_TARGET_TASK}
> + #install host
> + populate_sdk_rpm_internal ${SDK_OUTPUT} \
> + "${SDK_ARCH}-nativesdk-linux" \
> + ${RPMCONF_HOST_BASE} \
> + ${TOOLCHAIN_HOST_TASK}
> +
> + # move host RPM library data
> + install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm
> + mv ${SDK_OUTPUT}${rpmlibdir}/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm/
> + rm -Rf ${SDK_OUTPUT}/var
> +
> + install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
> + mv ${SDK_OUTPUT}/etc/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
> + rm -rf ${SDK_OUTPUT}/etc
> +
> + populate_sdk_log_check
> +}
> +
> +populate_sdk_rpm_log_check() {
> +
> + lf_path="$1"
Inconsistent indentation here.
> +
> + lf_txt="`cat $lf_path`"
> + for keyword_die in "Cannot find package" "exit 1" ERR Fail
> + do
> + if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1
> + then
> + echo "log_check: There were error messages in the logfile"
> + echo -e "log_check: Matched keyword: [$keyword_die]\n"
> + echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die"
> + echo ""
> + do_exit=1
> + fi
> + done
> + test "$do_exit" = 1 && exit 1
> + true
> +}
Cheers,
Joshua
--
Joshua Lock
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 6/6] meta_toolchain/populate_sdk: Made task populate_sdk more generic.
2011-01-27 2:51 ` [PATCH 6/6] meta_toolchain/populate_sdk: Made task populate_sdk more generic Lianhao Lu
@ 2011-01-27 10:47 ` Joshua Lock
0 siblings, 0 replies; 13+ messages in thread
From: Joshua Lock @ 2011-01-27 10:47 UTC (permalink / raw)
To: poky
On Thu, 2011-01-27 at 10:51 +0800, Lianhao Lu wrote:
> From: Lianhao Lu <lianhao.lu@intel.com>
>
> Make the task populate_sdk more generic to support installing from all
> ipk, rpm, and deb package format.
>
> Also remove the .la files fixing in task populate_sdk code because the
> libtool 2.4 now supports sysroot.
Could you do this as a separate commit and actually remove the lines of
code, rather than commenting them out?
>
> Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
> ---
> meta/classes/populate_sdk.bbclass | 88 +++++++++++++++++++++++++
> meta/classes/populate_sdk_rpm.bbclass | 6 +-
> meta/recipes-core/meta/meta-toolchain.bb | 103 +-----------------------------
> 3 files changed, 94 insertions(+), 103 deletions(-)
> create mode 100644 meta/classes/populate_sdk.bbclass
>
> diff --git a/meta/classes/populate_sdk.bbclass b/meta/classes/populate_sdk.bbclass
> new file mode 100644
> index 0000000..02870a6
> --- /dev/null
> +++ b/meta/classes/populate_sdk.bbclass
> @@ -0,0 +1,88 @@
> +inherit meta toolchain-scripts
> +inherit populate_sdk_${IMAGE_PKGTYPE}
> +
> +SDK_DIR = "${WORKDIR}/sdk"
> +SDK_OUTPUT = "${SDK_DIR}/image"
> +SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
> +
> +SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
> +
> +TOOLCHAIN_HOST_TASK ?= "task-sdk-host task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
> +TOOLCHAIN_TARGET_TASK ?= "task-poky-standalone-sdk-target task-poky-standalone-sdk-target-dbg"
> +TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}"
> +
> +RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
> +DEPENDS = "virtual/fakeroot-native sed-native"
> +
> +PID = "${@os.getpid()}"
> +
> +EXCLUDE_FROM_WORLD = "1"
> +
> +fakeroot do_populate_sdk() {
> + rm -rf ${SDK_OUTPUT}
> + mkdir -p ${SDK_OUTPUT}
> +
> + populate_sdk_${IMAGE_PKGTYPE}
> +
> + # Don't ship any libGL in the SDK
> + rm -rf ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/libGL*
> +
> + # Can copy pstage files here
> + # target_pkgs=`cat ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/var/lib/opkg/status | grep Package: | cut -f 2 -d ' '`
> +
> + # Fix or remove broken .la files
> + # no longer needed since libtool now support sysroot
> + #for i in `find ${SDK_OUTPUT}/${SDKTARGETSYSROOT} -name \*.la`; do
> + # sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${base_libdir},\1${SDKTARGETSYSROOT}${base_libdir},g" \
> + # -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${SDKTARGETSYSROOT}${libdir},g" \
> + # -e "/^dependency_libs=/s,\-\([LR]\)${base_libdir},-\1${SDKTARGETSYSROOT}${base_libdir},g" \
> + # -e "/^dependency_libs=/s,\-\([LR]\)${libdir},-\1${SDKTARGETSYSROOT}${libdir},g" \
> + # -e 's/^installed=yes$/installed=no/' $i
> + #done
> + #rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}/lib/*.la
> + rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
> +
> + # Link the ld.so.cache file into the hosts filesystem
> + ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
> +
> + # Setup site file for external use
> + siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS}
> + touch $siteconfig
> + for sitefile in ${CONFIG_SITE} ; do
> + cat $sitefile >> $siteconfig
> + done
> +
> + toolchain_create_sdk_env_script
> +
> + # Add version information
> + versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
> + touch $versionfile
> + echo 'Distro: ${DISTRO}' >> $versionfile
> + echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
> + echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
> + echo 'Timestamp: ${DATETIME}' >> $versionfile
> +
> + # Package it up
> + mkdir -p ${SDK_DEPLOY}
> + cd ${SDK_OUTPUT}
> + tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
> +}
> +
> +populate_sdk_log_check() {
> +
> + lf_path="${WORKDIR}/temp/log.do_populate_sdk.${PID}"
> +
> + echo "log_check: Using $lf_path as logfile"
> +
> + if test -e "$lf_path"
> + then
> + populate_sdk_${IMAGE_PKGTYPE}_log_check $lf_path
> + else
> + echo "Cannot find logfile [$lf_path]"
> + fi
> + echo "Logfile is clean"
> +}
> +
> +do_populate_sdk[nostamp] = "1"
> +do_populate_sdk[recrdeptask] = "do_package_write"
> +addtask populate_sdk before do_build after do_install
> diff --git a/meta/classes/populate_sdk_rpm.bbclass b/meta/classes/populate_sdk_rpm.bbclass
> index 883e67f..0e46341 100644
> --- a/meta/classes/populate_sdk_rpm.bbclass
> +++ b/meta/classes/populate_sdk_rpm.bbclass
> @@ -29,7 +29,7 @@ populate_sdk_rpm_internal() {
> confbase=$1
> shift
> package_to_install=$@
> -
> +
> # Setup base system configuration
> mkdir -p ${target_rootfs}/etc/rpm/
> echo "${platform}" >${target_rootfs}/etc/rpm/platform
> @@ -109,12 +109,12 @@ fakeroot populate_sdk_rpm () {
> install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm
> mv ${SDK_OUTPUT}${rpmlibdir}/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm/
> rm -Rf ${SDK_OUTPUT}/var
> -
> +
> install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
> mv ${SDK_OUTPUT}/etc/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
> rm -rf ${SDK_OUTPUT}/etc
>
> - populate_sdk_log_check
> + populate_sdk_log_check
> }
Whitespace changes here can be squashed into the original patch adding
this file.
>
> populate_sdk_rpm_log_check() {
> diff --git a/meta/recipes-core/meta/meta-toolchain.bb b/meta/recipes-core/meta/meta-toolchain.bb
> index 4aed9c2..feff9ac 100644
> --- a/meta/recipes-core/meta/meta-toolchain.bb
> +++ b/meta/recipes-core/meta/meta-toolchain.bb
> @@ -1,106 +1,9 @@
> DESCRIPTION = "Meta package for building a installable toolchain"
> LICENSE = "MIT"
> -DEPENDS = "opkg-native opkg-utils-native virtual/fakeroot-native sed-native"
> +
> +PR = "r1"
>
> LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
> file://${POKYBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>
> -inherit meta toolchain-scripts
> -
> -SDK_DIR = "${WORKDIR}/sdk"
> -SDK_OUTPUT = "${SDK_DIR}/image"
> -SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
> -
> -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
> -
> -IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT} --force-overwrite"
> -IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDKTARGETSYSROOT} --force-overwrite"
> -
> -TOOLCHAIN_HOST_TASK ?= "task-sdk-host task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
> -TOOLCHAIN_TARGET_TASK ?= "task-poky-standalone-sdk-target task-poky-standalone-sdk-target-dbg"
> -TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}"
> -
> -RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
> -
> -EXCLUDE_FROM_WORLD = "1"
> -
> -do_populate_sdk() {
> - rm -rf ${SDK_OUTPUT}
> - mkdir -p ${SDK_OUTPUT}
> - mkdir -p ${SDK_OUTPUT}${localstatedir}/lib/opkg/
> - mkdir -p ${SDK_OUTPUT}/${SDKTARGETSYSROOT}${localstatedir}/lib/opkg/
> -
> - rm -f ${IPKGCONF_TARGET}
> - touch ${IPKGCONF_TARGET}
> - rm -f ${IPKGCONF_SDK}
> - touch ${IPKGCONF_SDK}
> -
> - package_update_index_ipk
> - package_generate_ipkg_conf
> -
> - for arch in ${PACKAGE_ARCHS}; do
> - revipkgarchs="$arch $revipkgarchs"
> - done
> -
> - ${IPKG_HOST} update
> - ${IPKG_HOST} install ${TOOLCHAIN_HOST_TASK}
> -
> - ${IPKG_TARGET} update
> - ${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
> -
> - install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg
> - mv ${SDK_OUTPUT}/var/lib/opkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg/
> - rm -Rf ${SDK_OUTPUT}/var
> -
> - # Don't ship any libGL in the SDK
> - rm -rf ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/libGL*
> -
> - install -d ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}
> - install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/${sysconfdir}/
> -
> - install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
> - install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
> -
> - # Can copy pstage files here
> - # target_pkgs=`cat ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/var/lib/opkg/status | grep Package: | cut -f 2 -d ' '`
> -
> - # Fix or remove broken .la files
> - for i in `find ${SDK_OUTPUT}/${SDKTARGETSYSROOT} -name \*.la`; do
> - sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${base_libdir},\1${SDKTARGETSYSROOT}${base_libdir},g" \
> - -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${SDKTARGETSYSROOT}${libdir},g" \
> - -e "/^dependency_libs=/s,\-\([LR]\)${base_libdir},-\1${SDKTARGETSYSROOT}${base_libdir},g" \
> - -e "/^dependency_libs=/s,\-\([LR]\)${libdir},-\1${SDKTARGETSYSROOT}${libdir},g" \
> - -e 's/^installed=yes$/installed=no/' $i
> - done
> - #rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}/lib/*.la
> - rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
> -
> - # Link the ld.so.cache file into the hosts filesystem
> - ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
> -
> - # Setup site file for external use
> - siteconfig=${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS}
> - touch $siteconfig
> - for sitefile in ${CONFIG_SITE} ; do
> - cat $sitefile >> $siteconfig
> - done
> -
> - toolchain_create_sdk_env_script
> -
> - # Add version information
> - versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
> - touch $versionfile
> - echo 'Distro: ${DISTRO}' >> $versionfile
> - echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
> - echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
> - echo 'Timestamp: ${DATETIME}' >> $versionfile
> -
> - # Package it up
> - mkdir -p ${SDK_DEPLOY}
> - cd ${SDK_OUTPUT}
> - tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
> -}
> -
> -do_populate_sdk[nostamp] = "1"
> -do_populate_sdk[recrdeptask] = "do_package_write"
> -addtask populate_sdk before do_build after do_install
> +inherit populate_sdk
Cheers,
Joshua
--
Joshua Lock
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/6] Added rpm support in meta-toolchain
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
` (5 preceding siblings ...)
2011-01-27 2:51 ` [PATCH 5/6] package_rpm/populate_sdk_rpm: Added rpm support for populate_sdk task Lianhao Lu
@ 2011-01-27 22:03 ` Richard Purdie
2011-01-28 4:13 ` Lu, Lianhao
6 siblings, 1 reply; 13+ messages in thread
From: Richard Purdie @ 2011-01-27 22:03 UTC (permalink / raw)
To: Lianhao Lu; +Cc: poky
Hi Lianhao,
On Thu, 2011-01-27 at 10:51 +0800, Lianhao Lu wrote:
> From: Lianhao Lu <lianhao.lu@intel.com>
>
> The purpose of this series of patches is to add rpm support in meta-toolchain creation,
> and also to fix bug #227.
>
> It makes the task populate_sdk in meta/recipes-core/meta/meta-toolchain.bb more generic
> to support installing packages from ipk, rpm, and deb files in creating meta-toolchain
> tarball, and move the populate_sdk task out of meta-toolchain.bb recipe into a bbclass.
>
> It added populate_sdk_xxx.bbclass for different package file format.
>
> The meta-toolchain installing process involes 2 set of packages, one is the host sdk
> set which contains packages of applications(e.g. cross-canadian compilers, qemu, etc.) and
> relevant run-time libraries, the other is the target sdk set which contains packages of target
> arch's libraries and header files to create a target rootfs for cross compiling purpose.So
> the patches also modifes and/or adds functions in package_deb.bbclass & package_rpm.bbclass
> to update the package index and to generate different installing configuration files for the
> tow different sets.
>
> It also fixed a bug in cross-canadian.bbclass to enable the package_deb.bbclass generate correct
> deb package files for cross-canadian recipies.
Its great to see this but I think we need to restructure the code a
little more aggressively and create some general functions to complete
this properly.
What I mean is that both rootfs_ipk and populate_sdk_ipk share code,
rootfs_deb and populate_sdk_deb share code and likewise for rpm.
What we need is a generic function where we specify where the target
directory is and a list of packages we want to install along with some
architecture information and it then goes and does it. Those functions
would like in package_xxx.bbclass. We should do similar things well in
one place rather than in two with slightly different implementations.
Do you agree?
Cheers,
Richard
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/6] Added rpm support in meta-toolchain
2011-01-27 22:03 ` [PATCH 0/6] Added rpm support in meta-toolchain Richard Purdie
@ 2011-01-28 4:13 ` Lu, Lianhao
0 siblings, 0 replies; 13+ messages in thread
From: Lu, Lianhao @ 2011-01-28 4:13 UTC (permalink / raw)
To: Richard Purdie; +Cc: poky
Hi Richard,
Richard Purdie wrote on 2011-01-28:
> Hi Lianhao,
>
> On Thu, 2011-01-27 at 10:51 +0800, Lianhao Lu wrote:
>> From: Lianhao Lu <lianhao.lu@intel.com>
>>
>> The purpose of this series of patches is to add rpm support in
>> meta-toolchain creation, and also to fix bug #227.
>>
>> It makes the task populate_sdk in
>> meta/recipes-core/meta/meta-toolchain.bb more generic to support
>> installing packages from ipk, rpm, and deb files in creating
>> meta-toolchain
> tarball, and move the populate_sdk task out of meta-toolchain.bb
> recipe into a bbclass.
>>
>> It added populate_sdk_xxx.bbclass for different package file format.
>>
>> The meta-toolchain installing process involes 2 set of packages, one
>> is the host sdk set which contains packages of applications(e.g.
>> cross-canadian compilers, qemu, etc.) and relevant run-time
>> libraries, the other is the target sdk set which contains packages
>> of target arch's libraries and header files to create a target
>> rootfs for cross compiling purpose.So the patches also modifes
>> and/or adds functions in package_deb.bbclass & package_rpm.bbclass
>> to update the package index
> and to generate different installing configuration files for the tow
> different sets.
>>
>> It also fixed a bug in cross-canadian.bbclass to enable the
>> package_deb.bbclass generate correct deb package files for
>> cross-canadian
> recipies.
>
> Its great to see this but I think we need to restructure the code a
> little more aggressively and create some general functions to complete this properly.
>
> What I mean is that both rootfs_ipk and populate_sdk_ipk share code,
> rootfs_deb and populate_sdk_deb share code and likewise for rpm.
>
> What we need is a generic function where we specify where the target
> directory is and a list of packages we want to install along with some
> architecture information and it then goes and does it. Those functions
> would like in package_xxx.bbclass. We should do similar things well in
> one place rather than in two with slightly different implementations.
>
> Do you agree?
>
Ok, I'll merge the common part between rootfs_XXX and populate_sdk_XXX into package_XXX.
Best Regards,
Lianhao
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2011-01-28 4:13 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-27 2:51 [PATCH 0/6] Added rpm support in meta-toolchain Lianhao Lu
2011-01-27 2:51 ` [PATCH 1/6] cross-canadian/apt-native: support for debian package Lianhao Lu
2011-01-27 10:44 ` Joshua Lock
2011-01-27 2:51 ` [PATCH 4/6] classes/populate_sdk_*: remove blanks Lianhao Lu
2011-01-27 10:46 ` Joshua Lock
2011-01-27 2:51 ` [PATCH 6/6] meta_toolchain/populate_sdk: Made task populate_sdk more generic Lianhao Lu
2011-01-27 10:47 ` Joshua Lock
2011-01-27 2:51 ` [PATCH 2/6] classes/populate_sdk_ipk.bbclass: newly created Lianhao Lu
2011-01-27 2:51 ` [PATCH 3/6] populate_sdk_deb/package_deb: Added deb support for populate_sdk Lianhao Lu
2011-01-27 2:51 ` [PATCH 5/6] package_rpm/populate_sdk_rpm: Added rpm support for populate_sdk task Lianhao Lu
2011-01-27 10:46 ` Joshua Lock
2011-01-27 22:03 ` [PATCH 0/6] Added rpm support in meta-toolchain Richard Purdie
2011-01-28 4:13 ` Lu, Lianhao
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.