summaryrefslogtreecommitdiffstats
path: root/meta/classes/package_rpm.bbclass
diff options
context:
space:
mode:
authorXiaofeng Yan <xiaofeng.yan@windriver.com>2012-03-26 18:49:23 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-03-26 23:13:20 +0100
commit6a99e0f8fbb5c7a411da2e4b724c43f28e6fa0c1 (patch)
treee2593bcddfd9b156f54131684f98eda5f55d4abc /meta/classes/package_rpm.bbclass
parentb711d7b631accaac238b68cfd5bd44995382fc72 (diff)
downloadpoky-6a99e0f8fbb5c7a411da2e4b724c43f28e6fa0c1.tar.gz
package_rpm: Add srpm function to this bbclass
Add a new function to archive source, patches and logs to a source rpm package. Every source rpm package will be deployed to ${DEPLOY_DIR}/sources/deploy-srpm [YOCTO #1977] (From OE-Core rev: be2db850fbe516b92a3991a5eaf646c4a2b8a1b9) Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/package_rpm.bbclass')
-rw-r--r--meta/classes/package_rpm.bbclass53
1 files changed, 50 insertions, 3 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index 8c8d967741..0ccf574850 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -6,6 +6,7 @@ RPM="rpm"
6RPMBUILD="rpmbuild" 6RPMBUILD="rpmbuild"
7 7
8PKGWRITEDIRRPM = "${WORKDIR}/deploy-rpms" 8PKGWRITEDIRRPM = "${WORKDIR}/deploy-rpms"
9PKGWRITEDIRSRPM = "${DEPLOY_DIR}/sources/deploy-srpm"
9 10
10python package_rpm_fn () { 11python package_rpm_fn () {
11 d.setVar('PKGFN', d.getVar('PKG')) 12 d.setVar('PKGFN', d.getVar('PKG'))
@@ -481,6 +482,30 @@ python write_specfile () {
481 import textwrap 482 import textwrap
482 import oe.packagedata 483 import oe.packagedata
483 484
485 # append information for logs and patches to %prep
486 def add_prep(d,spec_files_bottom):
487 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
488 spec_files_bottom.append('%%prep -n %s' % d.getVar('PN', True) )
489 spec_files_bottom.append('%s' % "echo \"include logs and patches, Please check them in SOURCES\"")
490 spec_files_bottom.append('')
491
492 # get the name of tarball for sources, patches and logs
493 def get_tarballs(d):
494 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
495 return get_package(d)
496
497 # append the name of tarball to key word 'SOURCE' in xxx.spec.
498 def tail_source(d,source_list=[],patch_list=None):
499 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
500 source_number = 0
501 patch_number = 0
502 for source in source_list:
503 spec_preamble_top.append('Source' + str(source_number) + ': %s' % source)
504 source_number += 1
505 if patch_list:
506 for patch in patch_list:
507 print_deps(patch, "Patch" + str(patch_number), spec_preamble_top, d)
508 patch_number += 1
484 # We need a simple way to remove the MLPREFIX from the package name, 509 # We need a simple way to remove the MLPREFIX from the package name,
485 # and dependency information... 510 # and dependency information...
486 def strip_multilib(name, d): 511 def strip_multilib(name, d):
@@ -791,7 +816,8 @@ python write_specfile () {
791 816
792 del localdata 817 del localdata
793 bb.utils.unlockfile(lf) 818 bb.utils.unlockfile(lf)
794 819
820 add_prep(d,spec_files_bottom)
795 spec_preamble_top.append('Summary: %s' % srcsummary) 821 spec_preamble_top.append('Summary: %s' % srcsummary)
796 spec_preamble_top.append('Name: %s' % srcname) 822 spec_preamble_top.append('Name: %s' % srcname)
797 spec_preamble_top.append('Version: %s' % srcversion) 823 spec_preamble_top.append('Version: %s' % srcversion)
@@ -802,6 +828,8 @@ python write_specfile () {
802 spec_preamble_top.append('Group: %s' % srcsection) 828 spec_preamble_top.append('Group: %s' % srcsection)
803 spec_preamble_top.append('Packager: %s' % srcmaintainer) 829 spec_preamble_top.append('Packager: %s' % srcmaintainer)
804 spec_preamble_top.append('URL: %s' % srchomepage) 830 spec_preamble_top.append('URL: %s' % srchomepage)
831 source_list = get_tarballs(d)
832 tail_source(d,source_list,None)
805 833
806 # Replaces == Obsoletes && Provides 834 # Replaces == Obsoletes && Provides
807 if srcrreplaces and srcrreplaces.strip() != "": 835 if srcrreplaces and srcrreplaces.strip() != "":
@@ -823,7 +851,7 @@ python write_specfile () {
823 print_deps(srcrsuggests, "Recommends", spec_preamble_top, d) 851 print_deps(srcrsuggests, "Recommends", spec_preamble_top, d)
824 print_deps(srcrprovides, "Provides", spec_preamble_top, d) 852 print_deps(srcrprovides, "Provides", spec_preamble_top, d)
825 print_deps(srcrobsoletes, "Obsoletes", spec_preamble_top, d) 853 print_deps(srcrobsoletes, "Obsoletes", spec_preamble_top, d)
826 854
827 # conflicts can not be in a provide! We will need to filter it. 855 # conflicts can not be in a provide! We will need to filter it.
828 if srcrconflicts: 856 if srcrconflicts:
829 depends_dict = bb.utils.explode_dep_versions(srcrconflicts) 857 depends_dict = bb.utils.explode_dep_versions(srcrconflicts)
@@ -905,7 +933,16 @@ python write_specfile () {
905 933
906python do_package_rpm () { 934python do_package_rpm () {
907 import os 935 import os
908 936
937 def creat_srpm_dir(d):
938 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
939 clean_licenses = get_licenses(d)
940 pkgwritesrpmdir = bb.data.expand('${PKGWRITEDIRSRPM}/${PACKAGE_ARCH_EXTEND}', d)
941 pkgwritesrpmdir = pkgwritesrpmdir + '/' + clean_licenses
942 bb.mkdirhier(pkgwritesrpmdir)
943 os.chmod(pkgwritesrpmdir, 0755)
944 return pkgwritesrpmdir
945
909 # We need a simple way to remove the MLPREFIX from the package name, 946 # We need a simple way to remove the MLPREFIX from the package name,
910 # and dependency information... 947 # and dependency information...
911 def strip_multilib(name, d): 948 def strip_multilib(name, d):
@@ -1021,8 +1058,18 @@ python do_package_rpm () {
1021 cmd = cmd + " --define 'debug_package %{nil}'" 1058 cmd = cmd + " --define 'debug_package %{nil}'"
1022 cmd = cmd + " --define '_rpmfc_magic_path " + magicfile + "'" 1059 cmd = cmd + " --define '_rpmfc_magic_path " + magicfile + "'"
1023 cmd = cmd + " --define '_tmppath " + workdir + "'" 1060 cmd = cmd + " --define '_tmppath " + workdir + "'"
1061 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
1062 cmdsrpm = cmd + " --define '_sourcedir " + workdir + "' --define '_srcrpmdir " + creat_srpm_dir(d) + "'"
1063 cmdsrpm = 'fakeroot ' + cmdsrpm + " -bs " + outspecfile
1024 cmd = cmd + " -bb " + outspecfile 1064 cmd = cmd + " -bb " + outspecfile
1025 1065
1066 # Build the source rpm package !
1067 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
1068 d.setVar('SBUILDSPEC', cmdsrpm + "\n")
1069 d.setVarFlag('SBUILDSPEC', 'func', '1')
1070 bb.build.exec_func('SBUILDSPEC', d)
1071
1072
1026 # Build the rpm package! 1073 # Build the rpm package!
1027 d.setVar('BUILDSPEC', cmd + "\n") 1074 d.setVar('BUILDSPEC', cmd + "\n")
1028 d.setVarFlag('BUILDSPEC', 'func', '1') 1075 d.setVarFlag('BUILDSPEC', 'func', '1')