summaryrefslogtreecommitdiffstats
path: root/meta/classes/package.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/package.bbclass')
-rw-r--r--meta/classes/package.bbclass58
1 files changed, 50 insertions, 8 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 464ba8dc6f..e6236c0bb2 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -7,7 +7,7 @@
7# 7#
8# There are the following default steps but PACKAGEFUNCS can be extended: 8# There are the following default steps but PACKAGEFUNCS can be extended:
9# 9#
10# a) package_get_auto_pr - get PRAUTO from remote PR service 10# a) package_convert_pr_autoinc - convert AUTOINC in PKGV to ${PRSERV_PV_AUTOINC}
11# 11#
12# b) perform_packagecopy - Copy D into PKGD 12# b) perform_packagecopy - Copy D into PKGD
13# 13#
@@ -664,12 +664,20 @@ def runtime_mapping_rename (varname, pkg, d):
664 #bb.note("%s after: %s" % (varname, d.getVar(varname))) 664 #bb.note("%s after: %s" % (varname, d.getVar(varname)))
665 665
666# 666#
667# Package functions suitable for inclusion in PACKAGEFUNCS 667# Used by do_packagedata (and possibly other routines post do_package)
668# 668#
669 669
670package_get_auto_pr[vardepsexclude] = "BB_TASKDEPDATA"
670python package_get_auto_pr() { 671python package_get_auto_pr() {
671 import oe.prservice 672 import oe.prservice
672 import re 673
674 def get_do_package_hash(pn):
675 if d.getVar("BB_RUNTASK") != "do_package":
676 taskdepdata = d.getVar("BB_TASKDEPDATA", False)
677 for dep in taskdepdata:
678 if taskdepdata[dep][1] == "do_package" and taskdepdata[dep][0] == pn:
679 return taskdepdata[dep][6]
680 return None
673 681
674 # Support per recipe PRSERV_HOST 682 # Support per recipe PRSERV_HOST
675 pn = d.getVar('PN') 683 pn = d.getVar('PN')
@@ -681,15 +689,22 @@ python package_get_auto_pr() {
681 689
682 # PR Server not active, handle AUTOINC 690 # PR Server not active, handle AUTOINC
683 if not d.getVar('PRSERV_HOST'): 691 if not d.getVar('PRSERV_HOST'):
684 if 'AUTOINC' in pkgv: 692 d.setVar("PRSERV_PV_AUTOINC", "0")
685 d.setVar("PKGV", pkgv.replace("AUTOINC", "0"))
686 return 693 return
687 694
688 auto_pr = None 695 auto_pr = None
689 pv = d.getVar("PV") 696 pv = d.getVar("PV")
690 version = d.getVar("PRAUTOINX") 697 version = d.getVar("PRAUTOINX")
691 pkgarch = d.getVar("PACKAGE_ARCH") 698 pkgarch = d.getVar("PACKAGE_ARCH")
692 checksum = d.getVar("BB_TASKHASH") 699 checksum = get_do_package_hash(pn)
700
701 # If do_package isn't in the dependencies, we can't get the checksum...
702 if not checksum:
703 bb.warn('Task %s requested do_package unihash, but it was not available.' % d.getVar('BB_RUNTASK'))
704 #taskdepdata = d.getVar("BB_TASKDEPDATA", False)
705 #for dep in taskdepdata:
706 # bb.warn('%s:%s = %s' % (taskdepdata[dep][0], taskdepdata[dep][1], taskdepdata[dep][6]))
707 return
693 708
694 if d.getVar('PRSERV_LOCKDOWN'): 709 if d.getVar('PRSERV_LOCKDOWN'):
695 auto_pr = d.getVar('PRAUTO_' + version + '_' + pkgarch) or d.getVar('PRAUTO_' + version) or None 710 auto_pr = d.getVar('PRAUTO_' + version + '_' + pkgarch) or d.getVar('PRAUTO_' + version) or None
@@ -707,7 +722,7 @@ python package_get_auto_pr() {
707 srcpv = bb.fetch2.get_srcrev(d) 722 srcpv = bb.fetch2.get_srcrev(d)
708 base_ver = "AUTOINC-%s" % version[:version.find(srcpv)] 723 base_ver = "AUTOINC-%s" % version[:version.find(srcpv)]
709 value = conn.getPR(base_ver, pkgarch, srcpv) 724 value = conn.getPR(base_ver, pkgarch, srcpv)
710 d.setVar("PKGV", pkgv.replace("AUTOINC", str(value))) 725 d.setVar("PRSERV_PV_AUTOINC", str(value))
711 726
712 auto_pr = conn.getPR(version, pkgarch, checksum) 727 auto_pr = conn.getPR(version, pkgarch, checksum)
713 except Exception as e: 728 except Exception as e:
@@ -717,6 +732,22 @@ python package_get_auto_pr() {
717 d.setVar('PRAUTO',str(auto_pr)) 732 d.setVar('PRAUTO',str(auto_pr))
718} 733}
719 734
735#
736# Package functions suitable for inclusion in PACKAGEFUNCS
737#
738
739python package_convert_pr_autoinc() {
740 pkgv = d.getVar("PKGV")
741
742 # Adjust pkgv as necessary...
743 if 'AUTOINC' in pkgv:
744 d.setVar("PKGV", pkgv.replace("AUTOINC", "${PRSERV_PV_AUTOINC}"))
745
746 # Change PRSERV_PV_AUTOINC and EXTENDPRAUTO usage to special values
747 d.setVar('PRSERV_PV_AUTOINC', '@PRSERV_PV_AUTOINC@')
748 d.setVar('EXTENDPRAUTO', '@EXTENDPRAUTO@')
749}
750
720LOCALEBASEPN ??= "${PN}" 751LOCALEBASEPN ??= "${PN}"
721 752
722python package_do_split_locales() { 753python package_do_split_locales() {
@@ -2335,7 +2366,7 @@ python do_package () {
2335 package_qa_handle_error("var-undefined", msg, d) 2366 package_qa_handle_error("var-undefined", msg, d)
2336 return 2367 return
2337 2368
2338 bb.build.exec_func("package_get_auto_pr", d) 2369 bb.build.exec_func("package_convert_pr_autoinc", d)
2339 2370
2340 ########################################################################### 2371 ###########################################################################
2341 # Optimisations 2372 # Optimisations
@@ -2407,9 +2438,20 @@ addtask do_package_setscene
2407# Copy from PKGDESTWORK to tempdirectory as tempdirectory can be cleaned at both 2438# Copy from PKGDESTWORK to tempdirectory as tempdirectory can be cleaned at both
2408# do_package_setscene and do_packagedata_setscene leading to races 2439# do_package_setscene and do_packagedata_setscene leading to races
2409python do_packagedata () { 2440python do_packagedata () {
2441 bb.build.exec_func("package_get_auto_pr", d)
2442
2410 src = d.expand("${PKGDESTWORK}") 2443 src = d.expand("${PKGDESTWORK}")
2411 dest = d.expand("${WORKDIR}/pkgdata-pdata-input") 2444 dest = d.expand("${WORKDIR}/pkgdata-pdata-input")
2412 oe.path.copyhardlinktree(src, dest) 2445 oe.path.copyhardlinktree(src, dest)
2446
2447 bb.build.exec_func("packagedata_translate_pr_autoinc", d)
2448}
2449
2450# Translate the EXTENDPRAUTO and AUTOINC to the final values
2451packagedata_translate_pr_autoinc() {
2452 find ${WORKDIR}/pkgdata-pdata-input -type f | xargs --no-run-if-empty \
2453 sed -e 's,@PRSERV_PV_AUTOINC@,${PRSERV_PV_AUTOINC},g' \
2454 -e 's,@EXTENDPRAUTO@,${EXTENDPRAUTO},g' -i
2413} 2455}
2414 2456
2415addtask packagedata before do_build after do_package 2457addtask packagedata before do_build after do_package