diff options
| -rw-r--r-- | meta/lib/oe/recipeutils.py | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py index d86873056f..ae02af0fee 100644 --- a/meta/lib/oe/recipeutils.py +++ b/meta/lib/oe/recipeutils.py | |||
| @@ -664,7 +664,7 @@ def get_bbappend_path(d, destlayerdir, wildcardver=False): | |||
| 664 | return (appendpath, pathok) | 664 | return (appendpath, pathok) |
| 665 | 665 | ||
| 666 | 666 | ||
| 667 | def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False, machine=None, extralines=None, removevalues=None, redirect_output=None, params=None): | 667 | def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False, machine=None, extralines=None, removevalues=None, redirect_output=None, params=None, update_original_recipe=False): |
| 668 | """ | 668 | """ |
| 669 | Writes a bbappend file for a recipe | 669 | Writes a bbappend file for a recipe |
| 670 | Parameters: | 670 | Parameters: |
| @@ -701,19 +701,29 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False, | |||
| 701 | params: | 701 | params: |
| 702 | Parameters to use when adding entries to SRC_URI. If specified, | 702 | Parameters to use when adding entries to SRC_URI. If specified, |
| 703 | should be a list of dicts with the same length as srcfiles. | 703 | should be a list of dicts with the same length as srcfiles. |
| 704 | update_original_recipe: | ||
| 705 | Force to update the original recipe instead of creating/updating | ||
| 706 | a bbapend. destlayerdir must contain the original recipe | ||
| 704 | """ | 707 | """ |
| 705 | 708 | ||
| 706 | if not removevalues: | 709 | if not removevalues: |
| 707 | removevalues = {} | 710 | removevalues = {} |
| 708 | 711 | ||
| 709 | recipefile = rd.getVar('FILE') | 712 | recipefile = rd.getVar('FILE') |
| 710 | # Determine how the bbappend should be named | 713 | if update_original_recipe: |
| 711 | appendpath, pathok = get_bbappend_path(rd, destlayerdir, wildcardver) | 714 | if destlayerdir not in recipefile: |
| 712 | if not appendpath: | 715 | bb.error("destlayerdir %s doesn't contain the original recipe (%s), cannot update it" % (destlayerdir, recipefile)) |
| 713 | bb.error('Unable to determine layer directory containing %s' % recipefile) | 716 | return (None, None) |
| 714 | return (None, None) | 717 | |
| 715 | if not pathok: | 718 | appendpath = recipefile |
| 716 | bb.warn('Unable to determine correct subdirectory path for bbappend file - check that what %s adds to BBFILES also matches .bbappend files. Using %s for now, but until you fix this the bbappend will not be applied.' % (os.path.join(destlayerdir, 'conf', 'layer.conf'), os.path.dirname(appendpath))) | 719 | else: |
| 720 | # Determine how the bbappend should be named | ||
| 721 | appendpath, pathok = get_bbappend_path(rd, destlayerdir, wildcardver) | ||
| 722 | if not appendpath: | ||
| 723 | bb.error('Unable to determine layer directory containing %s' % recipefile) | ||
| 724 | return (None, None) | ||
| 725 | if not pathok: | ||
| 726 | bb.warn('Unable to determine correct subdirectory path for bbappend file - check that what %s adds to BBFILES also matches .bbappend files. Using %s for now, but until you fix this the bbappend will not be applied.' % (os.path.join(destlayerdir, 'conf', 'layer.conf'), os.path.dirname(appendpath))) | ||
| 717 | 727 | ||
| 718 | appenddir = os.path.dirname(appendpath) | 728 | appenddir = os.path.dirname(appendpath) |
| 719 | if not redirect_output: | 729 | if not redirect_output: |
| @@ -758,7 +768,7 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False, | |||
| 758 | bbappendlines.append((varname, op, value)) | 768 | bbappendlines.append((varname, op, value)) |
| 759 | 769 | ||
| 760 | destsubdir = rd.getVar('PN') | 770 | destsubdir = rd.getVar('PN') |
| 761 | if srcfiles: | 771 | if not update_original_recipe and srcfiles: |
| 762 | bbappendlines.append(('FILESEXTRAPATHS:prepend', ':=', '${THISDIR}/${PN}:')) | 772 | bbappendlines.append(('FILESEXTRAPATHS:prepend', ':=', '${THISDIR}/${PN}:')) |
| 763 | 773 | ||
| 764 | appendoverride = '' | 774 | appendoverride = '' |
| @@ -791,7 +801,10 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False, | |||
| 791 | appendline('SRC_URI:append%s' % appendoverride, '=', ' ' + srcurientry) | 801 | appendline('SRC_URI:append%s' % appendoverride, '=', ' ' + srcurientry) |
| 792 | else: | 802 | else: |
| 793 | if oldentry: | 803 | if oldentry: |
| 794 | appendline('SRC_URI:remove', '=', oldentry) | 804 | if update_original_recipe: |
| 805 | removevalues['SRC_URI'] = oldentry | ||
| 806 | else: | ||
| 807 | appendline('SRC_URI:remove', '=', oldentry) | ||
| 795 | appendline('SRC_URI', '+=', srcurientry) | 808 | appendline('SRC_URI', '+=', srcurientry) |
| 796 | param['path'] = srcfile | 809 | param['path'] = srcfile |
| 797 | else: | 810 | else: |
| @@ -816,6 +829,8 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False, | |||
| 816 | # multiple times per operation when we're handling overrides) | 829 | # multiple times per operation when we're handling overrides) |
| 817 | if os.path.exists(appendpath) and not os.path.exists(outfile): | 830 | if os.path.exists(appendpath) and not os.path.exists(outfile): |
| 818 | shutil.copy2(appendpath, outfile) | 831 | shutil.copy2(appendpath, outfile) |
| 832 | elif update_original_recipe: | ||
| 833 | outfile = recipefile | ||
| 819 | else: | 834 | else: |
| 820 | bb.note('Writing append file %s' % appendpath) | 835 | bb.note('Writing append file %s' % appendpath) |
| 821 | outfile = appendpath | 836 | outfile = appendpath |
