<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>6451</bug_id>
          
          <creation_ts>2014-06-14 05:44:31 +0000</creation_ts>
          <short_desc>save which recipe fetches which source</short_desc>
          <delta_ts>2023-08-03 15:15:10 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>core</component>
          <version>1.7</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Low</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>Future</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Yang">liezhi.yang</reporter>
          <assigned_to name="Unassigned">unassigned</assigned_to>
          <cc>adrian.freihofer</cc>
    
    <cc>bluelightning</cc>
    
    <cc>liezhi.yang</cc>
    
    <cc>mark.hatle</cc>
    
    <cc>meta.mr.watcher</cc>
    
    <cc>meta.watcher</cc>
    
    <cc>randy.macleod</cc>
    
    <cc>richard.purdie</cc>
    
    <cc>ross.burton</cc>
    
    <cc>sgw</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>Yes (doc changes required)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>43955</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2014-06-14 05:44:31 +0000</bug_when>
    <thetext>For example, this is libffi_3.1.bb&apos;s SRC_URI:

SRC_URI = &quot;ftp://sourceware.org/pub/libffi/${BP}.tar.gz&quot;

and It would fetch ${BP}.tar.gz to DL_DIR, it would help us to cleanup the DL_DIR if we can save a log like this:

/path/to/libffi_3.1.bb fetches ${BP}.tar.gz

Then we can cleanup the DL_DIR according to this log, maybe we can save the log to the DL_DIR or tmp/log/cooker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44100</commentid>
    <comment_count>1</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2014-06-19 14:47:59 +0000</bug_when>
    <thetext>I&apos;m a little worried this is the wrong way to solve this problem. The fetcher has code which knows how to clean a given recipe so it would be straightforward to also make it generate a list of files a given fetch could touch. We could therefore have a &quot;fetchall&quot; type task which would list all the DL_DIR files known to the current metadata. The implication would then be that any files not known would no longer be required.

Would that work as a proposal instead of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44105</commentid>
    <comment_count>2</comment_count>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2014-06-19 15:21:36 +0000</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;m a little worried this is the wrong way to solve this problem. The
&gt; fetcher has code which knows how to clean a given recipe so it would be
&gt; straightforward to also make it generate a list of files a given fetch could
&gt; touch. We could therefore have a &quot;fetchall&quot; type task which would list all
&gt; the DL_DIR files known to the current metadata. The implication would then
&gt; be that any files not known would no longer be required.
&gt; 
&gt; Would that work as a proposal instead of this?

Thanks, Yes, I think that it should work. We already have the fetchall task
in meta/classes/utility-tasks.bbclass:

addtask fetchall after do_fetch
do_fetchall[recrdeptask] = &quot;do_fetchall do_fetch&quot;
do_fetchall[recideptask] = &quot;do_${BB_DEFAULT_TASK}&quot;
do_fetchall() {
        :   
}

It seems that now what we need is let do_fetch save the list of what has been fetched ? for example:

python base_do_fetch() {
[snip]
    if saved_fetch_list:
        save_fetch_list to ${T}/fetch_list
[snip]
}

It would be better if we can save the list to TMPDIR or DL_DIR rather than T so that we can easily find the list and cleanup the DL_DIR according to the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44120</commentid>
    <comment_count>3</comment_count>
    <who name="Adrian">adrian.freihofer</who>
    <bug_when>2014-06-20 06:19:54 +0000</bug_when>
    <thetext>Just a spontaneous idea: What&apos;s about adding this file to the build history?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44121</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2014-06-20 06:23:41 +0000</bug_when>
    <thetext>(In reply to comment #3)
&gt; Just a spontaneous idea: What&apos;s about adding this file to the build history?

Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84501</commentid>
    <comment_count>5</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2019-07-25 15:12:26 +0000</bug_when>
    <thetext>If the actual goal is to clean up a DL_DIR, why not just delete all files that haven&apos;t been accessed for a year?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84509</commentid>
    <comment_count>6</comment_count>
    <who name="Randy MacLeod">randy.macleod</who>
    <bug_when>2019-07-25 16:07:20 +0000</bug_when>
    <thetext>We talked about the defect on the YP call.
Richard seemed to think that giving out the info could be problematic.
Instead, we need to define the desired change in behaviour and extend the fetcher and other code to implement that. 

As Ross say, if it&apos;s just general disk space savings deleting things that are too old works fine. I suspect that this is part of you rebase work where you want to be sure that all downloaded source has been added to our local repo that the fetcher uses.

Robert can you explain what workflow you are trying to fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84513</commentid>
    <comment_count>7</comment_count>
      <attachid>4543</attachid>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2019-07-26 07:07:00 +0000</bug_when>
    <thetext>Created attachment 4543
fetch_helper.bbclass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84514</commentid>
    <comment_count>8</comment_count>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2019-07-26 07:10:06 +0000</bug_when>
    <thetext>Yes, this is is for rebase work, we need cleanup old source (tarball) and new one when a recipe is upgraded, or remove the source (tarball and git) when a recipe is removed, I&apos;ve written a local bbclass to do it, please see the attachment, fetch_helper.bbclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91056</commentid>
    <comment_count>9</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2021-07-29 15:10:26 +0000</bug_when>
    <thetext>This came up again in bug triage. I was told this was to create a list of sources that could be placed in a clean DL_DIR to ship with a product. To do that I&apos;d much prefer an approach where a new DL_DIR is set, the previous DL_DIR is set as a mirror and fetches are run over the combinations of metadata you want to ship sources for.

If alternatively this is an issue trying to clean up DL_DIR, as ross says, removing files not touch for X months should work just as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91066</commentid>
    <comment_count>10</comment_count>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2021-07-30 09:11:36 +0000</bug_when>
    <thetext>Hi RP,

We cleanup the files twice a week, so X months is a little long.

I was thinking that others may also have similar requirements so I&apos;ve file this enhancement, but seems not, I&apos;m learning to close this ER if no objections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96190</commentid>
    <comment_count>11</comment_count>
    <who name="Randy MacLeod">randy.macleod</who>
    <bug_when>2023-08-03 15:15:10 +0000</bug_when>
    <thetext>At WR, when we update, we just add new tarballs or git repos and then at a later time, we remove unused source archives.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4543</attachid>
            <date>2019-07-26 07:07:00 +0000</date>
            <delta_ts>2019-07-26 07:07:00 +0000</delta_ts>
            <desc>fetch_helper.bbclass</desc>
            <filename>fetch_helper.bbclass</filename>
            <type>application/octet-stream</type>
            <size>6718</size>
            <attacher name="Robert Yang">liezhi.yang</attacher>
            
              <data encoding="base64">CmRvX2ZldGNoW3Bvc3RmdW5jc10gKz0gIndyaXRlX2ZldGNoX2RhdGEiCgpXUklURV9GRVRDSF9E
SVIgPz0gIiR7VE1QRElSfS9mZXRjaF9pbmZvIgoKcmVxdWlyZSBjb25mL2RsX2xheWVyLmNvbmYK
CnB5dGhvbiB3cml0ZV9mZXRjaF9kYXRhKCkgewogICAgaW1wb3J0IHN1YnByb2Nlc3MKCiAgICBy
ZWNpcGVfcGF0aCA9IGQuZ2V0VmFyKCdGSUxFJywgVHJ1ZSkKICAgIGxheWVyX3ByZWZpeCA9IG9z
LnBhdGguZGlybmFtZShkLmdldFZhcignQ09SRUJBU0UnLCBUcnVlKSkKICAgIHNyY191cmkgPSBk
LmdldFZhcignU1JDX1VSSScsIFRydWUpLnNwbGl0KCkKICAgIHNyY191cmlfcmVtb3RlID0gW10K
ICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goc3JjX3VyaSwgZCkKICAgIGZvciBpIGluIHNy
Y191cmk6CiAgICAgICAgaWYgaS5zdGFydHN3aXRoKCdmaWxlOi8vJykgb3IgKGhhc2F0dHIoZmV0
Y2hlci51ZFtpXSwgJ3Byb3RvJykgYW5kIGZldGNoZXIudWRbaV0ucHJvdG8gPT0gJ2ZpbGUnKToK
ICAgICAgICAgICAgY29udGludWUKICAgICAgICBzcmNfdXJpX3JlbW90ZS5hcHBlbmQoaSkKCiAg
ICBpZiBsZW4oc3JjX3VyaV9yZW1vdGUpID09IDA6CiAgICAgICAgYmIubm90ZSgnTm8gcmVtb3Rl
IHVybCBmb3VuZCcpCiAgICAgICAgcmV0dXJuCgogICAgZGxfZGlyID0gIiIKICAgICMgVGhlIERM
X0RJQ1QncyBmb3JtYXQgaXMgbGlrZToKICAgICMgRExfRElDVFsuYnVpbGRhcmVhLmx5YW5nMS5y
ZWJhc2UtcHJvamVjdC5sYXllcnMub2UtY29yZV0gPSAiL2J1aWxkYXJlYS9seWFuZzEvcmViYXNl
LXByb2plY3QvbGF5ZXJzL29lLWNvcmUtZGwtMi4zIgogICAgZGxfZGljdF9rZXlzID0gZC5nZXRW
YXJGbGFncygnRExfRElDVCcpCgogICAgIyBTb3J0IGtleXMsIHRoZSBsb25nZXN0IG9uZSBzaG91
bGQgYmUgaW4gdGhlIGZyb250CiAgICBzb3J0ZWRfZGxfZGljdF9rZXlzID0gW10KICAgIHdoaWxl
IFRydWU6CiAgICAgICAgbG9uZ2VzdCA9ICIiCiAgICAgICAgZm9yIGtleSBpbiBkbF9kaWN0X2tl
eXM6CiAgICAgICAgICAgIGlmIGxlbihrZXkpID4gbGVuKGxvbmdlc3QpOgogICAgICAgICAgICAg
ICAgbG9uZ2VzdCA9IGtleVs6XQogICAgICAgIGRlbChkbF9kaWN0X2tleXNbbG9uZ2VzdF0pCiAg
ICAgICAgc29ydGVkX2RsX2RpY3Rfa2V5cy5hcHBlbmQobG9uZ2VzdCkKICAgICAgICBpZiBub3Qg
ZGxfZGljdF9rZXlzOgogICAgICAgICAgICBicmVhawoKICAgIGZvciBrIGluIHNvcnRlZF9kbF9k
aWN0X2tleXM6CiAgICAgICAgcmVjaXBlX3BhdGhfdHJhbnMgPSByZWNpcGVfcGF0aC5yZXBsYWNl
KCcvJywgJy4nKQogICAgICAgIGlmIHJlY2lwZV9wYXRoX3RyYW5zLnN0YXJ0c3dpdGgoayk6CiAg
ICAgICAgICAgIGRsX2RpciA9IGQuZ2V0VmFyRmxhZygnRExfRElDVCcsIGssIFRydWUpCiAgICAg
ICAgICAgIGJyZWFrCgogICAgaWYgbm90IGRsX2RpcjoKICAgICAgICBiYi5ub3RlKCdOb3QgaW4g
c3VwcG9ydGVkIGxheWVycycpCiAgICAgICAgcmV0dXJuCgogICAgZC5zZXRWYXIoJ0RMX0RJUl9T
QVZFRCcsIGRsX2RpcikKCiAgICBkZWYgd3JpdGVfd2dldF9pbmZvKGxvY2FscGF0aCwgZGxfZGly
KToKCiAgICAgICAgI2JiLndhcm4oJ0NvcHlpbmcgJXMgdG8gJXMnICUgKGxvY2FscGF0aCwgZGxf
ZGlyKSkKICAgICAgICBwdiA9IGQuZ2V0VmFyKCdQVicsIFRydWUpCgogICAgICAgIG91dF9kaXIg
PSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1dSSVRFX0ZFVENIX0RJUicsIFRydWUpLCAnd2dldCcp
CiAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG91dF9kaXIpOgogICAgICAgICAgICBvcy5t
YWtlZGlycyhvdXRfZGlyKQoKICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCiAgICAg
ICAgb3V0ZmlsZSA9IG9zLnBhdGguam9pbihvdXRfZGlyLCBwbikKICAgICAgICB3aXRoIG9wZW4o
b3V0ZmlsZSwgJ2EnKSBhcyBmOgogICAgICAgICAgICBmLndyaXRlKCclcyAlcyAlcyAlcyAlc1xu
JyAlIChsb2NhbHBhdGgsIGRsX2RpciwgZC5nZXRWYXIoJ0JQTicsIFRydWUpLCBwdiwgZC5nZXRW
YXIoJ0ZJTEUnLCBUcnVlKSkpCgogICAgZGVmIHdyaXRlX2dpdF9pbmZvKHNyY191cmksIGxvY2Fs
cGF0aCwgZGxfZGlyKToKICAgICAgICBvdXRfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdX
UklURV9GRVRDSF9ESVInLCBUcnVlKSwgJ2dpdCcpCiAgICAgICAgaWYgbm90IG9zLnBhdGguZXhp
c3RzKG91dF9kaXIpOgogICAgICAgICAgICBvcy5tYWtlZGlycyhvdXRfZGlyKQoKICAgICAgICBw
biA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCiAgICAgICAgb3V0ZmlsZSA9IG9zLnBhdGguam9pbihv
dXRfZGlyLCBwbikKICAgICAgICBpZiAnOycgaW4gc3JjX3VyaToKICAgICAgICAgICAgc3JjX3Vy
aSA9IHNyY191cmlbOnNyY191cmkuZmluZCgnOycpXQogICAgICAgIHdpdGggb3BlbihvdXRmaWxl
LCAnYScpIGFzIGY6CiAgICAgICAgICAgIGYud3JpdGUoJyVzICVzICVzICVzICVzXG4nICUgKG9z
LnBhdGguYmFzZW5hbWUobG9jYWxwYXRoKSwgc3JjX3VyaSwgZGxfZGlyLCBkLmdldFZhcignQlBO
JywgVHJ1ZSksIGQuZ2V0VmFyKCdGSUxFJywgVHJ1ZSkpKQoKICAgIGRlZiB3cml0ZV9hbGxfaW5m
byhsb2NhbHBhdGgsIGRsX2Rpcik6CiAgICAgICAgb3V0X2RpciA9IG9zLnBhdGguam9pbihkLmdl
dFZhcignV1JJVEVfRkVUQ0hfRElSJywgVHJ1ZSksICdmdWxsJykKICAgICAgICBpZiBub3Qgb3Mu
cGF0aC5leGlzdHMob3V0X2Rpcik6CiAgICAgICAgICAgIG9zLm1ha2VkaXJzKG91dF9kaXIpCgog
ICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKICAgICAgICBwdiA9IGQuZ2V0VmFyKCdQ
VicsIFRydWUpCiAgICAgICAgb3V0ZmlsZSA9IG9zLnBhdGguam9pbihvdXRfZGlyLCBwbikKICAg
ICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgJ2EnKSBhcyBmOgogICAgICAgICAgICBmLndyaXRlKCcl
cyAlcyAlcyAlcyAlc1xuJyAlIChsb2NhbHBhdGgsIGRsX2RpciwgZC5nZXRWYXIoJ0JQTicsIFRy
dWUpLCBwdiwgZC5nZXRWYXIoJ0ZJTEUnLCBUcnVlKSkpCgogICAgaW1wb3J0IGdpdAogICAgaW1w
b3J0IHJlCgogICAgZGVmIGdldF9sb2NhbHBhdGhfc3VibW9kdWxlKGxvY2FscGF0aCwgZCk6CiAg
ICAgICAgcmV0ID0gW10KICAgICAgICBnID0gZ2l0LmNtZC5HaXQobG9jYWxwYXRoKQogICAgICAg
IHNyY3JldiA9IGQuZ2V0VmFyKCdTUkNSRVYnKQogICAgICAgIHRyeToKICAgICAgICAgICAgc3Vi
bW9kdWxlcyA9IGcuc2hvdygnJXM6LmdpdG1vZHVsZXMnICUgc3JjcmV2KQogICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246CiAgICAgICAgICAgIHN1Ym1vZHVsZXMgPSAnJwogICAgICAgIGZvciBzbSBp
biBzdWJtb2R1bGVzLnNwbGl0KCdcbicpOgogICAgICAgICAgICBpZiAndXJsID0gJyBpbiBzbToK
ICAgICAgICAgICAgICAgIHVybCA9IHNtLnNwbGl0KCd1cmwgPSAnKVsxXQogICAgICAgICAgICAg
ICAgdXJsX2ZtdCA9IG9zLnBhdGguYmFzZW5hbWUodXJsKS5yZXBsYWNlKCcuJywgJ18nKQogICAg
ICAgICAgICAgICAgIyBGaXggdXJsCiAgICAgICAgICAgICAgICBpZiBub3QgdXJsLnN0YXJ0c3dp
dGgoJ2dpdDovLycpOgogICAgICAgICAgICAgICAgICAgIHByb3RvY29sID0gdXJsLnNwbGl0KCc6
Ly8nKVswXQogICAgICAgICAgICAgICAgICAgIHBhdGggPSB1cmwuc3BsaXQoJzovLycpWzFdCiAg
ICAgICAgICAgICAgICAgICAgdXJsID0gImdpdDovLyVzO3Byb3RvY29sPSVzIiAlIChwYXRoLCBw
cm90b2NvbCkKICAgICAgICAgICAgICAgIGxkID0gZC5jcmVhdGVDb3B5KCkKICAgICAgICAgICAg
ICAgICMgV29ya2Fyb3VuZCBmb3IgbXVsdGlwbGUgU0NNcyB3aXRoIG5vIFNSQ1JFVl9GT1JNQVQg
ZXJyb3IKICAgICAgICAgICAgICAgIGxkLnNldFZhcignU1JDUkVWX0ZPUk1BVCcsIHVybF9mbXQp
CiAgICAgICAgICAgICAgICBsZC5zZXRWYXIoJ1NSQ1JFVl8lcycgJSB1cmxfZm10LCAnbWFzdGVy
JykKICAgICAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goW3VybF0sIGxkKQog
ICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmZXRjaGVyLnVkW3VybF0ubG9jYWxwYXRoKQoKICAg
ICAgICByZXR1cm4gcmV0CgogICAgZGVmIHdyaXRlX2xvY2FscGF0aF9zdWJtb2R1bGUoZmV0Y2hl
ciwgdWQsIGQpOgogICAgICAgIGRlZiB3cml0ZV9zdWJtb2R1bGUodWQsIHVybCwgbW9kdWxlLCBt
b2RwYXRoLCBkKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbmV3ZmV0Y2ggPSBi
Yi5mZXRjaDIuRmV0Y2goW3VybF0sIGQsIGNhY2hlPUZhbHNlKQogICAgICAgICAgICAgICAgZGxf
ZGlyID0gZC5nZXRWYXIoJ0RMX0RJUl9TQVZFRCcpCiAgICAgICAgICAgICAgICB3cml0ZV9hbGxf
aW5mbyhuZXdmZXRjaC51ZFt1cmxdLmxvY2FscGF0aCwgZGxfZGlyKQogICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICBiYi53YXJuKCdnaXRzbTogd3JpdGVf
c3VibW9kdWxlIGZhaWxlZDogJXMgJXMnICUgKHR5cGUoZSkuX19uYW1lX18sIHN0cihlKSkpCiAg
ICAgICAgZmV0Y2hlci5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHVkLmNsb25lZGlyLCB3cml0ZV9z
dWJtb2R1bGUpCgogICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpX3JlbW90ZSwg
ZCkKICAgIGZvciBrIGluIHNyY191cmlfcmVtb3RlOgogICAgICAgIGxvY2FscGF0aCA9IGZldGNo
ZXIudWRba10ubG9jYWxwYXRoCiAgICAgICAgd3JpdGVfYWxsX2luZm8obG9jYWxwYXRoLCBkbF9k
aXIpCiAgICAgICAgIyBXcml0ZSBhbGwgaW5mbwogICAgICAgIGlmIGsuc3RhcnRzd2l0aCgnZ2l0
c206Ly8nKToKICAgICAgICAgICAgIyBVc2UgdGhpcyBpZiBiaXRiYWtlIG1lcmdlcyByZWxhdGVk
IHBhdGNoZXMuCiAgICAgICAgICAgICN3cml0ZV9sb2NhbHBhdGhfc3VibW9kdWxlKGZldGNoZXIs
IGZldGNoZXIudWRba10sIGQpCiAgICAgICAgICAgIGxvY2FscGF0aF9zbXMgPSBnZXRfbG9jYWxw
YXRoX3N1Ym1vZHVsZShsb2NhbHBhdGgsIGQpCiAgICAgICAgICAgIGZvciBsb2NhbHBhdGhfc20g
aW4gbG9jYWxwYXRoX3NtczoKICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2Fs
cGF0aF9zbSk6CiAgICAgICAgICAgICAgICAgICAgd3JpdGVfYWxsX2luZm8obG9jYWxwYXRoX3Nt
LCBkbF9kaXIpCgogICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhsb2NhbHBhdGgpOgogICAg
ICAgICAgICAjIFdyaXRlIGdpdCBpbmZvCiAgICAgICAgICAgIGlmIChrLnN0YXJ0c3dpdGgoJ2dp
dDovLycpIG9yIGsuc3RhcnRzd2l0aCgnZ2l0c206Ly8nKSkgYW5kIG5vdCAoaGFzYXR0cihmZXRj
aGVyLnVkW2ldLCAncHJvdG8nKSBhbmQgZmV0Y2hlci51ZFtpXS5wcm90byA9PSAnZmlsZScpOgog
ICAgICAgICAgICAgICAgZyA9IGdpdC5jbWQuR2l0KGxvY2FscGF0aCkKICAgICAgICAgICAgICAg
IHJlbW90ZV91cmkgPSBnLmNvbmZpZygnLS1nZXQnLCAncmVtb3RlLm9yaWdpbi51cmwnKQogICAg
ICAgICAgICAgICAgZGxfZGlyX2dpdCA9IG9zLnBhdGguam9pbihkbF9kaXIsICdnaXQnKQogICAg
ICAgICAgICAgICAgd3JpdGVfZ2l0X2luZm8ocmVtb3RlX3VyaSwgbG9jYWxwYXRoLCBkbF9kaXIp
CgogICAgICAgICAgICAgICAgaWYgay5zdGFydHN3aXRoKCdnaXRzbTovLycpOgogICAgICAgICAg
ICAgICAgICAgIGxvY2FscGF0aF9zbXMgPSBnZXRfbG9jYWxwYXRoX3N1Ym1vZHVsZShsb2NhbHBh
dGgsIGQpCiAgICAgICAgICAgICAgICAgICAgZm9yIGxvY2FscGF0aF9zbSBpbiBsb2NhbHBhdGhf
c21zOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGhf
c20pOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGdpdC5jbWQuR2l0KGxvY2FscGF0
aF9zbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV91cmkgPSBnLmNvbmZpZygn
LS1nZXQnLCAncmVtb3RlLm9yaWdpbi51cmwnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JpdGVfZ2l0X2luZm8ocmVtb3RlX3VyaSwgbG9jYWxwYXRoX3NtLCBkbF9kaXJfZ2l0KQoKICAg
ICAgICAgICAgZWxpZiBrLnN0YXJ0c3dpdGgoJ2h0dHA6Ly8nKSBvciBrLnN0YXJ0c3dpdGgoJ2h0
dHBzOi8vJykgb3Igay5zdGFydHN3aXRoKCdmdHA6Ly8nKToKICAgICAgICAgICAgICAgIGRsX2Rp
cl93Z2V0ID0gb3MucGF0aC5qb2luKGRsX2RpciwgJ2Rvd25sb2FkcycpCiAgICAgICAgICAgICAg
ICB3cml0ZV93Z2V0X2luZm8obG9jYWxwYXRoLCBkbF9kaXJfd2dldCkKICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgIGJiLndhcm4oJ1Vuc3VwcG9ydGVkIHVybDogJXMnICUgaykKCiAg
ICAgICAgICAgICNiYi53YXJuKCdGb3VuZCBkb3dubG9hZGVkIGZpbGU6ICVzJyAlIGxvY2FscGF0
aCkKfQoKYWRkaGFuZGxlciBmaF9jb21wYXRpYmxlX2hvc3RfaGFuZGxlcgpmaF9jb21wYXRpYmxl
X2hvc3RfaGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlIgoK
cHl0aG9uIGZoX2NvbXBhdGlibGVfaG9zdF9oYW5kbGVyKCl7CiAgICBjX2hvc3QgPSBkLmdldFZh
cignQ09NUEFUSUJMRV9IT1NUJykKICAgIGlmIGNfaG9zdCBhbmQgbm90ICctbXVzbCcgaW4gY19o
b3N0OgogICAgICAgIGQuc2V0VmFyKCdDT01QQVRJQkxFX0hPU1QnLCAnLionKQp9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>