From: Ronan Le Martret Date: Fri, 16 May 2014 08:49:32 +0000 (+0200) Subject: Merge rpm and python-rpm X-Git-Tag: demo_release_0.1~95^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F37%2F21237%2F1;p=scm%2Fbb%2Fmeta-tizen.git Merge rpm and python-rpm Change-Id: Iff573175195aa8bee98049e58b148087b92e14eb Signed-off-by: Ronan Le Martret --- diff --git a/recipes-tizen/python-rpm/files/fix-python-rpm-conf.patch b/recipes-tizen/python-rpm/files/fix-python-rpm-conf.patch deleted file mode 100644 index 99edd9a..0000000 --- a/recipes-tizen/python-rpm/files/fix-python-rpm-conf.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index beb3549..851c986 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -540,10 +540,10 @@ esac], - - AS_IF([test "$enable_python" = yes],[ - AM_PATH_PYTHON([2.6],[ -- WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'` -+ WITH_PYTHON_INCLUDE=$(${PKG_CONFIG} --cflags-only-I python) - WITH_PYTHON_SUBPACKAGE=1 - save_CPPFLAGS="$CPPFLAGS" -- CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE" -+ CPPFLAGS="$CPPFLAGS $WITH_PYTHON_INCLUDE" - AC_CHECK_HEADER([Python.h],[], - [AC_MSG_ERROR([missing Python.h]) - ]) diff --git a/recipes-tizen/python-rpm/files/pythondeps.sh b/recipes-tizen/python-rpm/files/pythondeps.sh deleted file mode 100755 index 083b174..0000000 --- a/recipes-tizen/python-rpm/files/pythondeps.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -[ $# -ge 1 ] || { - cat > /dev/null - exit 0 -} - -case $1 in --R|--requires) - shift - grep "/usr/\(lib[^/]*\|share\)/python[^/]*/" >/dev/null && echo "python" - exit 0 - ;; -esac - -exit 0 diff --git a/recipes-tizen/python-rpm/files/rpmmodule.c.patch b/recipes-tizen/python-rpm/files/rpmmodule.c.patch deleted file mode 100644 index ccbde78..0000000 --- a/recipes-tizen/python-rpm/files/rpmmodule.c.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/python/rpmmodule.c b/python/rpmmodule.c -index a4fe217..728c66c 100644 ---- a/python/rpmmodule.c -+++ b/python/rpmmodule.c -@@ -396,6 +396,10 @@ static int initModule(PyObject *m) - REGISTER_ENUM(RPMSENSE_STRONG); - REGISTER_ENUM(RPMSENSE_CONFIG); - -+#if defined(RPM_VENDOR_OE) -+ REGISTER_ENUM(RPMSENSE_MISSINGOK); -+#endif -+ - REGISTER_ENUM(RPMTRANS_FLAG_TEST); - REGISTER_ENUM(RPMTRANS_FLAG_BUILD_PROBS); - REGISTER_ENUM(RPMTRANS_FLAG_NOSCRIPTS); diff --git a/recipes-tizen/python-rpm/python-rpm-extraconf.inc b/recipes-tizen/python-rpm/python-rpm-extraconf.inc deleted file mode 100644 index 9899601..0000000 --- a/recipes-tizen/python-rpm/python-rpm-extraconf.inc +++ /dev/null @@ -1,172 +0,0 @@ -SRC_URI += "file://pythondeps.sh \ - file://fix-python-rpm-conf.patch \ - file://rpmmodule.c.patch \ - " - -BBCLASSEXTEND_append = " nativesdk " - -do_prep() { - cd ${S} - chmod -Rf a+rX,u+w,g-w,o-w ${S} - #setup -q -n rpm-4.11.0.1 - ### PREP BEGIN ### - cp ${S}/packaging/rpm.manifest . - rm -rf sqlite - tar xjf ${S}/packaging/db-4.8.30.tar.bz2 - ln -s db-4.8.30 db - chmod -R u+w db/* - # will get linked from db3 - rm -f rpmdb/db.h - patch -p0 < ${S}/packaging/db-4.8.30-integration.dif - - if [ -s /etc/rpm/tizen_macros ]; then - cp -a /etc/rpm/tizen_macros ${S}/packaging/rpm-tizen_macros - fi - cp -a ${S}/packaging/rpm-tizen_macros tizen_macros - rm -f m4/libtool.m4 - rm -f m4/lt*.m4 - ### PREP END ### - - -} - -do_compile_prepend() { - cd ${S} - LANG=C - export LANG - unset DISPLAY - CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables" ; export CFLAGS ; - CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; - FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; - LD_AS_NEEDED=1; export LD_AS_NEEDED ; - - ### BUILD BEGIN ### - CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss` " - export CPPFLAGS - export CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -ffunction-sections" - export LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic-functions -ffunction-sections" - - export CCFLAGS+=" -fPIC " - export CXXFLAGS+=" -fPIC " - export CFLAGS+=" -fPIC " - - cd db3 - ./configure --build=${TARGET_SYS} --host=x86_64-linux-gnu - cd .. - - cp db3/configure db3/configure.ac -} - -do_compile() { - cd ${S} - LANG=C - export LANG - unset DISPLAY - CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables" ; export CFLAGS ; - CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; - FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; - LD_AS_NEEDED=1; export LD_AS_NEEDED ; - - ### BUILD BEGIN ### - CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss` " - CPPFLAGS="$CPPFLAGS `pkg-config --cflags python`" - export CPPFLAGS - export CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -ffunction-sections" - export LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic-functions -ffunction-sections" - - BUILDTARGET="--build=x86_64-tizen-linux --host=x86_64-linux-gnu " - - autoreconf -i -f - export CFLAGS+=" -DRPM_VENDOR_OE " - ./configure \ - --sysconfdir=${sysconfdir} \ - --prefix=${prefix} \ - --mandir=${prefix}/share/man \ - --infodir=${prefix}/share/info \ - --libdir=${prefix}/lib \ - --sysconfdir=/${sysconfdir} \ - --localstatedir=/${localstatedir} \ - --disable-dependency-tracking \ - --with-lua \ - --with-acl \ - --with-cap \ - --enable-shared \ - --enable-python \ - --with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \ - --with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \ - --with-msm \ - $BUILDTARGET - - make -j16 - ### BUILD END ### - -} - -python-rpm_files += "/bin" -python-rpm_files += "/var" -python-rpm_files += "/var/volatile" -python-rpm_files += "/var/tmp" -python-rpm_files += "/var/volatile/tmp" -python-rpm_files += "/usr/bin" -python-rpm_files += "/usr/lib/rpm-plugins" -python-rpm_files += "/usr/lib/rpm" -python-rpm_files += "/usr/lib/rpm/platform" -python-rpm_files += "/usr/lib/rpm/fileattrs" -python-rpm_files += "/usr/lib/rpm/platform/sh3-linux" -python-rpm_files += "/usr/lib/rpm/platform/athlon-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppciseries-linux" -python-rpm_files += "/usr/lib/rpm/platform/amd64-linux" -python-rpm_files += "/usr/lib/rpm/platform/alpha-linux" -python-rpm_files += "/usr/lib/rpm/platform/s390x-linux" -python-rpm_files += "/usr/lib/rpm/platform/alphaev6-linux" -python-rpm_files += "/usr/lib/rpm/platform/alphaev5-linux" -python-rpm_files += "/usr/lib/rpm/platform/i686-linux" -python-rpm_files += "/usr/lib/rpm/platform/i386-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc-linux" -python-rpm_files += "/usr/lib/rpm/platform/alphaev56-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv7hl-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc8560-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv3l-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv4l-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc32dy4-linux" -python-rpm_files += "/usr/lib/rpm/platform/sh-linux" -python-rpm_files += "/usr/lib/rpm/platform/i486-linux" -python-rpm_files += "/usr/lib/rpm/platform/ia32e-linux" -python-rpm_files += "/usr/lib/rpm/platform/sparc64-linux" -python-rpm_files += "/usr/lib/rpm/platform/i586-linux" -python-rpm_files += "/usr/lib/rpm/platform/sh4a-linux" -python-rpm_files += "/usr/lib/rpm/platform/sparc-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv4b-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc64pseries-linux" -python-rpm_files += "/usr/lib/rpm/platform/s390-linux" -python-rpm_files += "/usr/lib/rpm/platform/x86_64-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc64p7-linux" -python-rpm_files += "/usr/lib/rpm/platform/sparcv8-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc8260-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv7l-linux" -python-rpm_files += "/usr/lib/rpm/platform/ia64-linux" -python-rpm_files += "/usr/lib/rpm/platform/sparc64v-linux" -python-rpm_files += "/usr/lib/rpm/platform/geode-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc64iseries-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv6l-linux" -python-rpm_files += "/usr/lib/rpm/platform/sh4-linux" -python-rpm_files += "/usr/lib/rpm/platform/alphapca56-linux" -python-rpm_files += "/usr/lib/rpm/platform/sparcv9-linux" -python-rpm_files += "/usr/lib/rpm/platform/noarch-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppc64-linux" -python-rpm_files += "/usr/lib/rpm/platform/ppcpseries-linux" -python-rpm_files += "/usr/lib/rpm/platform/pentium3-linux" -python-rpm_files += "/usr/lib/rpm/platform/sparcv9v-linux" -python-rpm_files += "/usr/lib/rpm/platform/pentium4-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv5tejl-linux" -python-rpm_files += "/usr/lib/rpm/platform/armv5tel-linux" -python-rpm_files += "/usr/lib/rpm/platform/alphaev67-linux" - -FILES_${PN}-dbg += "\ - ${libdir}/python2.7/site-packages/rpm/.debug/* \ - " - - - - - diff --git a/recipes-tizen/python-rpm/python-rpm.inc b/recipes-tizen/python-rpm/python-rpm.inc deleted file mode 100644 index 1b91739..0000000 --- a/recipes-tizen/python-rpm/python-rpm.inc +++ /dev/null @@ -1,115 +0,0 @@ -DESCRIPTION = "Python Bindings for Manipulating RPM Packages" -HOMEPAGE = "http://nohomepage.org" -SECTION = "Base/Package Management" -LICENSE = "GPL-2.0+" - -SRC_URI = "" - -S = "${WORKDIR}/git" - -inherit autotools-brokensep - -PROVIDES = "" - -#PROVIDES by python-rpm - - -RDEPENDS = "" -#RDEPENDS of python-rpm (${PN}) -RDEPENDS_${PN} += "rpm" - - -DEPENDS = "" -#DEPENDS of python-rpm -#Replace "DEPENDS" on gettext by "inherit gettext" -inherit gettext -DEPENDS += "attr" -DEPENDS += "ncurses" -DEPENDS += "libxml2" -DEPENDS += "elfutils" -DEPENDS += "zlib" -DEPENDS += "uthash" -DEPENDS += "bzip2" -DEPENDS += "acl" -DEPENDS += "xz" -DEPENDS += "lua" -DEPENDS += "smack" -DEPENDS += "libtool-cross" -DEPENDS += "file" -DEPENDS += "popt" -DEPENDS += "libcap" -DEPENDS += "nss" -inherit pythonnative - -do_prep() { - cd ${S} - chmod -Rf a+rX,u+w,g-w,o-w ${S} - #setup -q -n rpm-4.11.0.1 - - - -} -do_patch_append() { - bb.build.exec_func('do_prep', d) -} - -do_configure() { -} - -do_compile() { - cd ${S} - LANG=C - export LANG - unset DISPLAY - CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables" ; export CFLAGS ; - CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; - FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; - LD_AS_NEEDED=1; export LD_AS_NEEDED ; - - - - - -} - -do_install() { - echo export RPM_BUILD_ROOT=${D} - cd ${S} - LANG=C - export LANG - unset DISPLAY - rm -rf ${D} - mkdir -p ${D} - - mkdir -p ${D}${prefix}/lib - # only installing in python/ does not work because rpm links against - # installed libs at install time - - oe_runmake \ - DESTDIR=${D} \ - INSTALL_ROOT=${D} \ - BINDIR=${prefix}/bin \ - install - rm -f ${D}${infodir}/dir - find ${D} -regex ".*\.la$" | xargs rm -f -- - find ${D} -regex ".*\.a$" | xargs rm -f -- - find ${D} -not -type d -and -not -path ${D}${prefix}/lib/python*/site-packages/rpm/\* -print0 | xargs -0 rm - pushd ${D}/${prefix}/lib/python*/site-packages/rpm - rm -f _rpmmodule.a _rpmmodule.la - #python ${prefix}/lib/python*/py_compile.py *.py - #python -O ${prefix}/lib/python*/py_compile.py *.py - popd - - -} - - -python-rpm_files = "" -python-rpm_files += "${prefix}/lib/python*/*/*" - -FILES_${PN} = "${python-rpm_files}" - -PKG_python-rpm= "python-rpm" - -require python-rpm-extraconf.inc - diff --git a/recipes-tizen/python-rpm/python-rpm_git.bb b/recipes-tizen/python-rpm/python-rpm_git.bb deleted file mode 100644 index 8a221da..0000000 --- a/recipes-tizen/python-rpm/python-rpm_git.bb +++ /dev/null @@ -1,10 +0,0 @@ -require python-rpm.inc - -PRIORITY = "10" - -LIC_FILES_CHKSUM ??= "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" - -SRC_URI += "git://review.tizen.org/platform/upstream/rpm;tag=900e279b9481a75ede028707fe5a0a2bb2801a8f;nobranch=1" - -BBCLASSEXTEND = "native" - diff --git a/recipes-tizen/rpm/rpm-extraconf.inc b/recipes-tizen/rpm/rpm-extraconf.inc index 247c59d..958e452 100644 --- a/recipes-tizen/rpm/rpm-extraconf.inc +++ b/recipes-tizen/rpm/rpm-extraconf.inc @@ -9,9 +9,12 @@ DEPENDS += "uthash-native" DEPENDS += "smack-native" DEPENDS += "acl-native" DEPENDS += "lua-native" +DEPENDS += "python" CFLAGS_append = " -DRPM_VENDOR_OE " +BBCLASSEXTEND += " nativesdk " + do_compile_prepend() { cd ${S} LANG=C @@ -31,6 +34,7 @@ do_compile_prepend() { export CCFLAGS+=" -fPIC " export CXXFLAGS+=" -fPIC " export CFLAGS+=" -fPIC " + cd db3 ./configure --build=${TARGET_SYS} --host=x86_64-linux-gnu cd .. @@ -39,10 +43,59 @@ do_compile_prepend() { export CFLAGS+=" -DRPM_VENDOR_OE " } -do_install_append() { - mkdir -p ${D}${prefix}/lib/rpm/bin - ln -s ../debugedit ${D}${prefix}/lib/rpm/bin/debugedit - ln -s ../rpmdeps ${D}${prefix}/lib/rpm/bin/rpmdeps-oecore + +do_compile() { + cd ${S} + LANG=C + export LANG + unset DISPLAY + CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables" ; export CFLAGS ; + CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; + FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; + LD_AS_NEEDED=1; export LD_AS_NEEDED ; + + CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss`" + export CPPFLAGS + export CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -ffunction-sections" + export LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic-functions -ffunction-sections" + + BUILDTARGET="--host=x86_64-linux-gnu " + + + CFLAGS="${CFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CFLAGS ; + CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; + FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; + autoreconf -i -f + ./configure --host=${HOST_SYS} \ + --target=x86_64-tizen-linux \ + --program-prefix= \ + --prefix=${prefix} \ + --exec-prefix=${prefix} \ + --bindir=${prefix}/bin \ + --sbindir=${prefix}/sbin \ + --sysconfdir=${sysconfdir} \ + --datadir=${prefix}/share \ + --includedir=${prefix}/include \ + --libdir=${prefix}/lib \ + --libexecdir=${prefix}/libexec \ + --localstatedir=${localstatedir} \ + --sharedstatedir=${prefix}/com \ + --mandir=${mandir} \ + --infodir=${infodir} \ + --disable-dependency-tracking \ + --with-lua \ + --with-acl \ + --with-cap \ + --enable-shared \ + --with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \ + --with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \ + --with-msm \ + $BUILDTARGET + + make -j16 + + + } do_install() { @@ -67,11 +120,6 @@ do_install() { find ${D} -regex ".*\.la$" | xargs rm -f -- find ${D} -regex ".*\.a$" | xargs rm -f -- install -m 644 db3/db.h ${D}${prefix}/include/rpm - # remove .la file and the static variant of libpopt - # have to remove the dependency from other .la files as well - #for f in ${D}/${prefix}/lib/*.la; do - # sed -i -e "s,/lib/libpopt.la,-lpopt,g" $f - #done mkdir -p ${D}${sysconfdir}/rpm cp -a tizen_macros ${D}${prefix}/lib/rpm mkdir -p ${D}${prefix}/lib/rpm/tizen @@ -87,7 +135,7 @@ do_install() { for d in ${D}${prefix}/lib/rpm/platform/*-linux/macros ; do dd=${d%-linux/macros} dd=${dd##*/} - mkdir ${D}${prefix}/src/packages/RPMS/$dd + mkdir -p ${D}${prefix}/src/packages/RPMS/$dd chmod 755 ${D}${prefix}/src/packages/RPMS/$dd done mkdir -p ${D}${localstatedir}/lib/rpm @@ -95,14 +143,14 @@ do_install() { export RPM_BUILD_ROOT chmod 755 doc/manual rm -rf doc/manual/Makefile* - rm -f ${D}/usr/lib/rpmpopt + rm -f ${D}${prefix}/lib/rpmpopt rm -rf ${D}${mandir}/{fr,ja,ko,pl,ru,sk} rm -f ${D}${prefix}/share/locale/de/LC_MESSAGES/rpm.mo rm -f ${D}${prefix}/lib/rpm/cpanflute ${D}${prefix}/lib/rpm/cpanflute2 install -m 755 scripts/find-supplements{,.ksyms} ${D}${prefix}/lib/rpm install -m 755 scripts/firmware.prov ${D}${prefix}/lib/rpm install -m 755 scripts/debuginfo.prov ${D}${prefix}/lib/rpm - rm -f ${D}${prefix}/lib/locale ${D}/usr/lib/rpmrc + rm -f ${D}${prefix}/lib/locale ${D}${prefix}/lib/rpmrc mkdir -p ${D}${sysconfdir}/rpm chmod 755 ${D}${sysconfdir}/rpm mkdir -p ${D}${prefix}/lib/rpm/macros.d @@ -121,19 +169,34 @@ do_install() { fi done popd - rm -rf ${D}/${prefix}/lib/python2.7 rm -f ${D}${prefix}/lib/*.la rm -f ${D}${prefix}/lib/rpm-plugins/*.la - rm ${D}${prefix}/bin/rpmgraph - rm -fr ${D}${localstatedir}/tmp - rm -fr ${D}${localstatedir}/volatile + + _target=""; + _symlinks=0; + + sh ${D}${prefix}/lib/rpm/find-lang.sh ${D} rpm + + + +} + + + +do_install_append() { + rm -fr ${D}/var/tmp + rm -fr ${D}/var/volatile + + mkdir -p ${D}${prefix}/lib/rpm/bin + ln -s ../debugedit ${D}${prefix}/lib/rpm/bin/debugedit + ln -s ../rpmdeps ${D}${prefix}/lib/rpm/bin/rpmdeps-oecore } FILES_${PN}-dbg += "\ ${libdir}/rpm-plugins/.debug/* \ " - +PROVIDES += " python-rpm " DEPENDS_native += "popt-native" DEPENDS_native += "uthash-native" diff --git a/recipes-tizen/rpm/rpm.inc b/recipes-tizen/rpm/rpm.inc index 30f09f7..a805d6a 100644 --- a/recipes-tizen/rpm/rpm.inc +++ b/recipes-tizen/rpm/rpm.inc @@ -1,4 +1,4 @@ -DESCRIPTION = "The RPM Package Manager" +DESCRIPTION = "The Package Manager" HOMEPAGE = "http://www.rpm.org" SECTION = "Base/Package Management" LICENSE = "GPL-2.0+" @@ -11,10 +11,13 @@ inherit autotools-brokensep PROVIDES = "" -#PROVIDES by rpm-security-plugin +#PROVIDES by rpm-security-plugin -#PROVIDES by rpm-build +#PROVIDES by python-rpm + + +#PROVIDES by rpm-build # the PROVIDES rules is ignore "rpmbuild " PROVIDES += "rpmbuild" RPROVIDES_rpm-build += "rpmbuild" @@ -23,16 +26,16 @@ PROVIDES += "rpm:${prefix}/bin/rpmbuild" RPROVIDES_rpm-build += "rpm:${prefix}/bin/rpmbuild" -#PROVIDES by rpm-locale +#PROVIDES by rpm-locale # the PROVIDES rules is ignore "rpm-lang-all = 4.11.0.1" PROVIDES += "rpm-lang-all" RPROVIDES_rpm-locale += "rpm-lang-all" -#PROVIDES by rpm-dev +#PROVIDES by rpm-dev -#PROVIDES by rpm +#PROVIDES by rpm # the PROVIDES rules is ignore "rpminst " PROVIDES += "rpminst" RPROVIDES_rpm += "rpminst" @@ -41,16 +44,18 @@ PROVIDES += "rpm-libs" RPROVIDES_rpm += "rpm-libs" -#PROVIDES by rpm-docs +#PROVIDES by rpm-docs RDEPENDS = "" #RDEPENDS of rpm-security-plugin (${PN}-security-plugin) -RDEPENDS_${PN}-security-plugin += "libxml2" RDEPENDS_${PN}-security-plugin += "smack" RDEPENDS_${PN}-security-plugin += "nss" RDEPENDS_${PN}-security-plugin += "rpm" +#RDEPENDS of python-rpm (python-${PN}) +RDEPENDS_python-${PN} += "rpm" + #RDEPENDS of rpm-build (${PN}-build) RDEPENDS_${PN}-build += "bzip2" RDEPENDS_${PN}-build += "make" @@ -72,7 +77,8 @@ RDEPENDS_${PN}-dev += "popt" DEPENDS = "" -#DEPENDS of rpm +#DEPENDS of python-rpm +#DEPENDS of rpm DEPENDS += "libxml2" DEPENDS += "xz" DEPENDS += "findutils" @@ -80,21 +86,26 @@ DEPENDS += "file" DEPENDS += "popt" DEPENDS += "uthash" DEPENDS += "nss" -DEPENDS += "gcc-cross" +DEPENDS_append_class-native = " gcc" +DEPENDS_append_class-target = " gcc-cross" +DEPENDS += "lua" DEPENDS += "elfutils" DEPENDS += "patch" -DEPENDS += "lua" +inherit pythonnative DEPENDS += "libcap" DEPENDS += "ncurses" DEPENDS += "bzip2" DEPENDS += "smack" -DEPENDS += "libtool-cross" +DEPENDS_append_class-native = " libtool" +DEPENDS_append_class-target = " libtool-cross" #Replace "DEPENDS" on gettext by "inherit gettext" inherit gettext DEPENDS += "attr" DEPENDS += "zlib" DEPENDS += "acl" DEPENDS += "gzip" +DEPENDS_append_class-native = " fdupes-native" +DEPENDS_append_class-target = " fdupes-native" DEPENDS += "make" DEPENDS += "binutils" @@ -102,7 +113,6 @@ do_prep() { cd ${S} chmod -Rf a+rX,u+w,g-w,o-w ${S} #setup -q -n rpm-4.11.0.1 - ### PREP BEGIN ### cp ${S}/packaging/rpm.manifest . rm -rf sqlite tar xjf ${S}/packaging/db-4.8.30.tar.bz2 @@ -111,16 +121,14 @@ do_prep() { # will get linked from db3 rm -f rpmdb/db.h patch -p0 < ${S}/packaging/db-4.8.30-integration.dif - - if [ -s /etc/rpm/tizen_macros ]; then - cp -a /etc/rpm/tizen_macros ${S}/packaging/rpm-tizen_macros + if [ -s ${sysconfdir}/rpm/tizen_macros ]; then + cp -a ${sysconfdir}/rpm/tizen_macros ${S}/packaging/rpm-tizen_macros fi cp -a ${S}/packaging/rpm-tizen_macros tizen_macros rm -f m4/libtool.m4 rm -f m4/lt*.m4 - ### PREP END ### - - + + } do_patch_append() { bb.build.exec_func('do_prep', d) @@ -134,29 +142,52 @@ do_compile() { LANG=C export LANG unset DISPLAY - CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables" ; export CFLAGS ; - CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; - FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; - LD_AS_NEEDED=1; export LD_AS_NEEDED ; - - ### BUILD BEGIN ### + CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables" ; export CFLAGS ; + CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; + FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; + LD_AS_NEEDED=1; export LD_AS_NEEDED ; + CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss`" - export CPPFLAGS + export CPPFLAGS export CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -ffunction-sections" - export LDFLAGS="-Wl,-Bsymbolic-functions -ffunction-sections" - - BUILDTARGET="--build=x86_64-tizen-linux" - - autoreconf -i -f - ./configure --disable-dependency-tracking --prefix=${prefix} --mandir=${mandir} --infodir=${infodir} \ - --libdir=${prefix}/lib --sysconfdir=/etc --localstatedir=/var --with-lua \ - --with-acl --with-cap --enable-shared --with-msm $BUILDTARGET --host=x86_64-linux-gnu - + export LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic-functions -ffunction-sections" + + BUILDTARGET="--host=x86_64-linux-gnu " + BUILDTARGET+="--build=x86_64-tizen-linux " + + + CFLAGS="${CFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CFLAGS ; + CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ; + FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ; + autotools_do_configure --build=${TARGET_SYS} --host=${HOST_SYS} \ + --target=x86_64-tizen-linux \ + --program-prefix= \ + --prefix=${prefix} \ + --exec-prefix=${prefix} \ + --bindir=${prefix}/bin \ + --sbindir=${prefix}/sbin \ + --sysconfdir=${sysconfdir} \ + --datadir=${prefix}/share \ + --includedir=${prefix}/include \ + --libdir=${prefix}/lib \ + --libexecdir=${prefix}/libexec \ + --localstatedir=${localstatedir} \ + --sharedstatedir=${prefix}/com \ + --mandir=${mandir} \ + --infodir=${infodir} \ + --disable-dependency-tracking \ + --with-lua \ + --with-acl \ + --with-cap \ + --enable-shared \ + --enable-python \ + --with-msm \ + $BUILDTARGET + make -j16 - ### BUILD END ### - - - + + + } do_install() { @@ -165,63 +196,58 @@ do_install() { LANG=C export LANG unset DISPLAY - rm -rf ${D} - mkdir -p ${D} - - mkdir -p ${D}/usr/lib - mkdir -p ${D}/usr/share/locale - ln -s ../share/locale ${D}/usr/lib/locale - + rm -rf ${D} + mkdir -p ${D} + + mkdir -p ${D}${prefix}/lib + mkdir -p ${D}${prefix}/share/locale + ln -s ../share/locale ${D}${prefix}/lib/locale + oe_runmake \ DESTDIR=${D} \ INSTALL_ROOT=${D} \ BINDIR=${prefix}/bin \ - install - rm -f ${D}${infodir}/dir - find ${D} -regex ".*\.la$" | xargs rm -f -- + install + rm -f ${D}${infodir}/dir + find ${D} -regex ".*\.la$" | xargs rm -f -- find ${D} -regex ".*\.a$" | xargs rm -f -- - install -m 644 db3/db.h ${D}/usr/include/rpm - # remove .la file and the static variant of libpopt - # have to remove the dependency from other .la files as well - #for f in ${D}/${prefix}/lib/*.la; do - # sed -i -e "s,/lib/libpopt.la,-lpopt,g" $f - #done + install -m 644 db3/db.h ${D}${prefix}/include/rpm mkdir -p ${D}${sysconfdir}/rpm - cp -a tizen_macros ${D}/usr/lib/rpm - mkdir -p ${D}/usr/lib/rpm/tizen - install -m 755 ${S}/packaging/find-docs.sh ${D}/usr/lib/rpm/tizen - install -m 755 ${S}/packaging/find-provides.ksyms ${D}/usr/lib/rpm + cp -a tizen_macros ${D}${prefix}/lib/rpm + mkdir -p ${D}${prefix}/lib/rpm/tizen + install -m 755 ${S}/packaging/find-docs.sh ${D}${prefix}/lib/rpm/tizen + install -m 755 ${S}/packaging/find-provides.ksyms ${D}${prefix}/lib/rpm install -m 644 ${S}/packaging/device-sec-policy ${D}${sysconfdir}/device-sec-policy install -m 644 ${S}/packaging/device-sec-policy ${D}${prefix}/lib/rpm-plugins/msm-device-sec-policy - ln -s ../tizen_macros ${D}/usr/lib/rpm/tizen/macros + ln -s ../tizen_macros ${D}${prefix}/lib/rpm/tizen/macros for d in BUILD RPMS SOURCES SPECS SRPMS BUILDROOT ; do - mkdir -p ${D}/usr/src/packages/$d - chmod 755 ${D}/usr/src/packages/$d + mkdir -p ${D}${prefix}/src/packages/$d + chmod 755 ${D}${prefix}/src/packages/$d done - for d in ${D}/usr/lib/rpm/platform/*-linux/macros ; do + for d in ${D}${prefix}/lib/rpm/platform/*-linux/macros ; do dd=${d%-linux/macros} dd=${dd##*/} - mkdir ${D}/usr/src/packages/RPMS/$dd - chmod 755 ${D}/usr/src/packages/RPMS/$dd + mkdir -p ${D}${prefix}/src/packages/RPMS/$dd + chmod 755 ${D}${prefix}/src/packages/RPMS/$dd done - mkdir -p ${D}/var/lib/rpm - gzip -9 ${D}/${mandir}/man[18]/*.[18] + mkdir -p ${D}${localstatedir}/lib/rpm + gzip -9 ${D}${mandir}/man[18]/*.[18] export RPM_BUILD_ROOT chmod 755 doc/manual rm -rf doc/manual/Makefile* - rm -f ${D}/usr/lib/rpmpopt + rm -f ${D}${prefix}/lib/rpmpopt rm -rf ${D}${mandir}/{fr,ja,ko,pl,ru,sk} rm -f ${D}${prefix}/share/locale/de/LC_MESSAGES/rpm.mo - rm -f ${D}/usr/lib/rpm/cpanflute ${D}/usr/lib/rpm/cpanflute2 - install -m 755 scripts/find-supplements{,.ksyms} ${D}/usr/lib/rpm - install -m 755 scripts/firmware.prov ${D}/usr/lib/rpm - install -m 755 scripts/debuginfo.prov ${D}/usr/lib/rpm - rm -f ${D}/usr/lib/locale ${D}/usr/lib/rpmrc - mkdir -p ${D}/etc/rpm - chmod 755 ${D}/etc/rpm - mkdir -p ${D}/usr/lib/rpm/macros.d + rm -f ${D}${prefix}/lib/rpm/cpanflute ${D}${prefix}/lib/rpm/cpanflute2 + install -m 755 scripts/find-supplements{,.ksyms} ${D}${prefix}/lib/rpm + install -m 755 scripts/firmware.prov ${D}${prefix}/lib/rpm + install -m 755 scripts/debuginfo.prov ${D}${prefix}/lib/rpm + rm -f ${D}${prefix}/lib/locale ${D}${prefix}/lib/rpmrc + mkdir -p ${D}${sysconfdir}/rpm + chmod 755 ${D}${sysconfdir}/rpm + mkdir -p ${D}${prefix}/lib/rpm/macros.d # remove some nonsense or non-working scripts - pushd ${D}/usr/lib/rpm/ + pushd ${D}${prefix}/lib/rpm/ for f in rpm2cpio.sh rpm.daily rpmdiff* rpm.log rpm.xinetd freshen.sh u_pkg.sh \ magic magic.mgc magic.mime* rpmfile *.pl javadeps brp-redhat \ brp-strip-static-archive vpkg-provides*.sh http.req sql.req tcl.req \ @@ -229,21 +255,44 @@ do_install() { do rm -f $f done - for i in /usr/share/automake-*/*; do + for i in ${prefix}/share/automake-*/*; do if test -f "$i" && test -f "${i##*/}"; then rm -f "${i##*/}" fi done popd - rm -rf ${D}/${prefix}/lib/python2.7 rm -f ${D}${prefix}/lib/*.la rm -f ${D}${prefix}/lib/rpm-plugins/*.la - sh ${D}/usr/lib/rpm/find-lang.sh ${D} rpm - - + + + _target=""; + _symlinks=0; + + fdupes -q -n -r ${D}${prefix}/lib/rpm/platform | + while read _file; do + if test -z "$_target" ; then + _target="$_file"; + else + if test -z "$_file" ; then + _target=""; + continue ; + fi ; + if test "$_symlinks" = 1; then + ln -sf "${_target#${D}}" "$_file"; + else + ln -f "$_target" "$_file"; + fi ; + fi ; + done + + sh ${D}${prefix}/lib/rpm/find-lang.sh ${D} rpm + + + } PACKAGES += " rpm-security-plugin " +PACKAGES += " python-rpm " PACKAGES += " rpm-build " PACKAGES += " rpm-docs " @@ -253,32 +302,36 @@ rpm-security-plugin_files += "${prefix}/lib/rpm-plugins/msm.so" rpm-security-plugin_files += "${prefix}/lib/rpm-plugins/msm-device-sec-policy" rpm-security-plugin_files += "${sysconfdir}/device-sec-policy" +python-rpm_files = "" +python-rpm_files += "${prefix}/lib/python*/site-packages/rpm" +python-rpm_files += "${prefix}/lib/python*/site-packages/rpm/transaction.py" + rpm-build_files = "" rpm-build_files += "rpm.manifest" rpm-build_files += "${prefix}/bin/rpmbuild" rpm-build_files += "${prefix}/bin/gendiff" rpm-build_files += "${prefix}/bin/rpmspec" rpm-build_files += "${prefix}/bin/rpmsign" -rpm-build_files += "/usr/lib/rpm/tizen/find-*" -rpm-build_files += "/usr/lib/rpm/brp-*" -rpm-build_files += "/usr/lib/rpm/find-supplements*" -rpm-build_files += "/usr/lib/rpm/check-*" -rpm-build_files += "/usr/lib/rpm/debugedit" -rpm-build_files += "/usr/lib/rpm/find-debuginfo.sh" -rpm-build_files += "/usr/lib/rpm/find-lang.sh" -rpm-build_files += "/usr/lib/rpm/find-provides.ksyms" -rpm-build_files += "/usr/lib/rpm/*provides*" -rpm-build_files += "/usr/lib/rpm/*requires*" -rpm-build_files += "/usr/lib/rpm/*deps*" -rpm-build_files += "/usr/lib/rpm/*.prov" -rpm-build_files += "/usr/lib/rpm/*.req" -rpm-build_files += "/usr/lib/rpm/macros.*" -rpm-build_files += "/usr/lib/rpm/fileattrs" +rpm-build_files += "${prefix}/lib/rpm/tizen/find-*" +rpm-build_files += "${prefix}/lib/rpm/brp-*" +rpm-build_files += "${prefix}/lib/rpm/find-supplements*" +rpm-build_files += "${prefix}/lib/rpm/check-*" +rpm-build_files += "${prefix}/lib/rpm/debugedit" +rpm-build_files += "${prefix}/lib/rpm/find-debuginfo.sh" +rpm-build_files += "${prefix}/lib/rpm/find-lang.sh" +rpm-build_files += "${prefix}/lib/rpm/find-provides.ksyms" +rpm-build_files += "${prefix}/lib/rpm/*provides*" +rpm-build_files += "${prefix}/lib/rpm/*requires*" +rpm-build_files += "${prefix}/lib/rpm/*deps*" +rpm-build_files += "${prefix}/lib/rpm/*.prov" +rpm-build_files += "${prefix}/lib/rpm/*.req" +rpm-build_files += "${prefix}/lib/rpm/macros.*" +rpm-build_files += "${prefix}/lib/rpm/fileattrs" rpm-dev_files = "" rpm-dev_files += "rpm.manifest" rpm-dev_files += "${prefix}/bin/rpmgraph" -rpm-dev_files += "/usr/include/rpm" +rpm-dev_files += "${prefix}/include/rpm" rpm-dev_files += "${prefix}/lib/librpm.so" rpm-dev_files += "${prefix}/lib/librpmbuild.so" rpm-dev_files += "${prefix}/lib/librpmio.so" @@ -292,7 +345,7 @@ rpm-docs_files += "GROUPS" rpm_files = "" rpm_files += "rpm.manifest" -rpm_files += "/etc/rpm" +rpm_files += "${sysconfdir}/rpm" rpm_files += "/bin/rpm" rpm_files += "${prefix}/bin/rpm2cpio" rpm_files += "${prefix}/bin/rpmdb" @@ -300,29 +353,33 @@ rpm_files += "${prefix}/bin/rpmkeys" rpm_files += "${prefix}/bin/rpmquery" rpm_files += "${prefix}/bin/rpmverify" rpm_files += "${prefix}/bin/rpmqpack" -rpm_files += "%dir /usr/lib/rpm" -rpm_files += "/usr/lib/rpm/macros" -rpm_files += "/usr/lib/rpm/macros.d" -rpm_files += "/usr/lib/rpm/rpmpopt*" -rpm_files += "/usr/lib/rpm/rpmrc" -rpm_files += "/usr/lib/rpm/tizen/macros" -rpm_files += "/usr/lib/rpm/tizen_macros" -rpm_files += "/usr/lib/rpm/rpm.supp" -rpm_files += "/usr/lib/rpm/tgpg" -rpm_files += "/usr/lib/rpm/platform" +rpm_files += "%dir ${prefix}/lib/rpm" +rpm_files += "${prefix}/lib/rpm/macros" +rpm_files += "${prefix}/lib/rpm/macros.d" +rpm_files += "${prefix}/lib/rpm/rpmpopt*" +rpm_files += "${prefix}/lib/rpm/rpmrc" +rpm_files += "${prefix}/lib/rpm/tizen/macros" +rpm_files += "${prefix}/lib/rpm/tizen_macros" +rpm_files += "${prefix}/lib/rpm/rpm.supp" +rpm_files += "${prefix}/lib/rpm/tgpg" +rpm_files += "${prefix}/lib/rpm/platform" rpm_files += "${prefix}/lib/rpm-plugins" rpm_files += "${prefix}/lib/rpm-plugins/exec.so" rpm_files += "${prefix}/lib/librpm.so.*" rpm_files += "${prefix}/lib/librpmio.so.*" rpm_files += "${prefix}/lib/librpmbuild.so.*" rpm_files += "${prefix}/lib/librpmsign.so.*" -rpm_files += "/var/lib/rpm" -rpm_files += "%attr(755,root,root) /usr/src/packages/BUILD" -rpm_files += "%attr(755,root,root) /usr/src/packages/SPECS" -rpm_files += "%attr(755,root,root) /usr/src/packages/SOURCES" -rpm_files += "%attr(755,root,root) /usr/src/packages/SRPMS" +rpm_files += "${localstatedir}/lib/rpm" +rpm_files += "%attr(755,root,root) ${prefix}/src/packages/BUILD" +rpm_files += "%attr(755,root,root) ${prefix}/src/packages/SPECS" +rpm_files += "%attr(755,root,root) ${prefix}/src/packages/SOURCES" +rpm_files += "%attr(755,root,root) ${prefix}/src/packages/SRPMS" +rpm_files += "%attr(755,root,root) ${prefix}/src/packages/RPMS" +rpm_files += "%attr(755,root,root) ${prefix}/src/packages/BUILDROOT" +rpm_files += "%attr(755,root,root) ${prefix}/src/packages/RPMS/*" FILES_${PN}-security-plugin = "${rpm-security-plugin_files}" +FILES_python-${PN} = "${python-rpm_files}" FILES_${PN}-build = "${rpm-build_files}" FILES_${PN}-dev = "${rpm-dev_files}" FILES_${PN}-locale = "${rpm-locale_files}" @@ -330,6 +387,7 @@ FILES_${PN}-docs = "${rpm-docs_files}" FILES_${PN} = "${rpm_files}" PKG_rpm-security-plugin= "rpm-security-plugin" +PKG_python-rpm= "python-rpm" PKG_rpm-build= "rpm-build" PKG_rpm-dev= "rpm-dev" PKG_rpm-locale= "rpm-locale" diff --git a/recipes-tizen/rpm/rpm_git.bb b/recipes-tizen/rpm/rpm_git.bb index e319b1b..48e091e 100644 --- a/recipes-tizen/rpm/rpm_git.bb +++ b/recipes-tizen/rpm/rpm_git.bb @@ -4,7 +4,7 @@ PRIORITY = "10" LIC_FILES_CHKSUM ??= "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" -SRC_URI += "git://review.tizen.org/platform/upstream/rpm;tag=900e279b9481a75ede028707fe5a0a2bb2801a8f;nobranch=1" - +SRC_URI += "git://review.tizen.org/platform/upstream/rpm;tag=d81d7b2f5c69ec104400b5d8fcfbcbc88d3bfd63;nobranch=1" +BBCLASSEXTEND = " native "