From 5c6fce4ed7646481c56c98f2561b7455ad414d18 Mon Sep 17 00:00:00 2001 From: Baptiste DURAND Date: Wed, 18 Sep 2013 11:33:42 +0200 Subject: [PATCH] FIx dependency --- meta-wrt-tizen/classes/tizenBuildUtils.bbclass | 19 ++--- meta-wrt-tizen/classes/tizenBuildUtilsRPM.bbclass | 98 +++++++++++++++++++++++ 2 files changed, 104 insertions(+), 13 deletions(-) create mode 100644 meta-wrt-tizen/classes/tizenBuildUtilsRPM.bbclass diff --git a/meta-wrt-tizen/classes/tizenBuildUtils.bbclass b/meta-wrt-tizen/classes/tizenBuildUtils.bbclass index 1e781ed..d3c55a3 100644 --- a/meta-wrt-tizen/classes/tizenBuildUtils.bbclass +++ b/meta-wrt-tizen/classes/tizenBuildUtils.bbclass @@ -1,7 +1,9 @@ inherit autotools - +inherit tizenBuildUtilsRPM PACKAGING = "${S}" +COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemux86-64|chiefriver)" + unpack_patch_specfile () { SPECPATH=$(spec2yocto findBestSpecFile ${PACKAGING}/packaging/ --package_pn=${BPN}) spec2yocto specfile_patcher ${SPECPATH} --package_pn=${BPN} --package_pn=${PN} @@ -248,16 +250,7 @@ oe_runconf2 () { fi } -write_specfile () { - export WORKDIR=${WORKDIR} - pushd ${WORKDIR}/package - find . -name *.info -exec gzip {} \; - popd - pushd ${WORKDIR} - ln -sf ${S} BUILD - ln -sf ${PACKAGING}/packaging SOURCES - popd - SPECPATH=$(spec2yocto findBestSpecFile ${WORKDIR}/original_tizen_spec_file/ --package_pn=${BPN}) - spec2yocto generatePseudoSpecfile ${SPECPATH} > ${OUTSPECFILE} -} + + + diff --git a/meta-wrt-tizen/classes/tizenBuildUtilsRPM.bbclass b/meta-wrt-tizen/classes/tizenBuildUtilsRPM.bbclass new file mode 100644 index 0000000..7f853b3 --- /dev/null +++ b/meta-wrt-tizen/classes/tizenBuildUtilsRPM.bbclass @@ -0,0 +1,98 @@ +inherit autotools + +PACKAGING = "${S}" + +python do_package_rpm () { + def creat_srpm_dir(d): + if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) == 'srpm': + clean_licenses = get_licenses(d) + pkgwritesrpmdir = bb.data.expand('${PKGWRITEDIRSRPM}/${PACKAGE_ARCH_EXTEND}', d) + pkgwritesrpmdir = pkgwritesrpmdir + '/' + clean_licenses + bb.mkdirhier(pkgwritesrpmdir) + os.chmod(pkgwritesrpmdir, 0755) + return pkgwritesrpmdir + + # We need a simple way to remove the MLPREFIX from the package name, + # and dependency information... + def strip_multilib(name, d): + ml = d.getVar("MLPREFIX", True) + if ml and name and len(ml) != 0 and name.find(ml) >= 0: + return "".join(name.split(ml)) + return name + + workdir = d.getVar('WORKDIR', True) + outdir = d.getVar('DEPLOY_DIR_IPK', True) + tmpdir = d.getVar('TMPDIR', True) + pkgd = d.getVar('PKGD', True) + pkgdest = d.getVar('PKGDEST', True) + if not workdir or not outdir or not pkgd or not tmpdir: + bb.error("Variables incorrectly set, unable to package") + return + + packages = d.getVar('PACKAGES', True) + if not packages or packages == '': + bb.debug(1, "No packages; nothing to do") + return + + # Construct the spec file... + # If the spec file already exist, and has not been stored into + # pseudo's files.db, it maybe cause rpmbuild src.rpm fail, + # so remove it before doing rpmbuild src.rpm. + srcname = strip_multilib(d.getVar('PN', True), d) + outspecfile = workdir + "/" + srcname + ".spec" + if os.path.isfile(outspecfile): + os.remove(outspecfile) + d.setVar('OUTSPECFILE', outspecfile) + bb.build.exec_func('write_specfile', d) + + perfiledeps = (d.getVar("MERGEPERFILEDEPS", True) or "0") == "0" + if perfiledeps: + outdepends, outprovides = write_rpm_perfiledata(srcname, d) + + # Setup the rpmbuild arguments... + rpmbuild = d.getVar('RPMBUILD', True) + targetsys = d.getVar('TARGET_SYS', True) + targetvendor = d.getVar('TARGET_VENDOR', True) + package_arch = (d.getVar('PACKAGE_ARCH', True) or "").replace("-", "_") + if package_arch not in "all any noarch".split() and not package_arch.endswith("_nativesdk"): + ml_prefix = (d.getVar('MLPREFIX', True) or "").replace("-", "_") + d.setVar('PACKAGE_ARCH_EXTEND', ml_prefix + package_arch) + else: + d.setVar('PACKAGE_ARCH_EXTEND', package_arch) + pkgwritedir = d.expand('${PKGWRITEDIRRPM}/${PACKAGE_ARCH_EXTEND}') + pkgarch = d.expand('${PACKAGE_ARCH_EXTEND}${TARGET_VENDOR}-${TARGET_OS}') + magicfile = d.expand('${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc') + bb.mkdirhier(pkgwritedir) + os.chmod(pkgwritedir, 0755) + + cmd = rpmbuild + cmd = cmd + " --nodeps --short-circuit --target " + pkgarch + " --buildroot " + pkgd + cmd = cmd + " --define '_topdir " + workdir + "' --define '_rpmdir " + pkgwritedir + "'" + cmd = cmd + " --define '_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'" + cmd = cmd + " --define '_use_internal_dependency_generator 0'" + cmd = cmd + " --define '__find_requires /usr/share/spec2yocto/macro/lib/find-requires %name'" + cmd = cmd + " --define '__find_provides /usr/share/spec2yocto/macro/lib/find-provides %name'" + cmd = cmd + " --define '_unpackaged_files_terminate_build 0'" + cmd = cmd + " --define 'debug_package %{nil}'" + cmd = cmd + " --define '_rpmfc_magic_path " + magicfile + "'" + cmd = cmd + " --define '_tmppath " + workdir + "'" + if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) == 'srpm': + cmd = cmd + " --define '_sourcedir " + workdir + "'" + cmdsrpm = cmd + " --define '_srcrpmdir " + creat_srpm_dir(d) + "'" + cmdsrpm = cmdsrpm + " -bs " + outspecfile + # Build the .src.rpm + d.setVar('SBUILDSPEC', cmdsrpm + "\n") + d.setVarFlag('SBUILDSPEC', 'func', '1') + bb.build.exec_func('SBUILDSPEC', d) + # Remove the source (SOURCE0, SOURCE1 ...) + cmd = cmd + " --rmsource " + cmd = cmd + " -bb " + outspecfile + + # Build the rpm package! + d.setVar('BUILDSPEC', cmd + "\n") + d.setVarFlag('BUILDSPEC', 'func', '1') + bb.build.exec_func('BUILDSPEC', d) +} + + + -- 2.7.4