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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>179814</bug_id>
          
          <creation_ts>2017-11-17 00:39:48 -0800</creation_ts>
          <short_desc>[Win] forwarding headers should not be copies</short_desc>
          <delta_ts>2017-11-30 12:06:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Salisbury">mark.salisbury</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>clopez</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>mark.salisbury</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1373002</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 00:39:48 -0800</bug_when>
    <thetext>When forwarding headers are copies of header files, and both the forwarding header version and the real version of the header file are included, compile errors arise from symbols being defined multiple times.

Instead of copying the header file we should create a forwarding header that contains a #include path to the real header.  The copy command is unique to the Windows...

Konstantin Tokarev said in reply (see to mail subject &quot;[webkit-dev] unified sources build + forwarding headers that are copies&quot;) :

&quot;AFAIK Windows uses different approach because AppleWin needs to support separate building of WTF, WebCore, and WebKit.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373003</commentid>
    <comment_count>1</comment_count>
      <attachid>327155</attachid>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 00:42:11 -0800</bug_when>
    <thetext>Created attachment 327155
Proposed fix

I&apos;ve tested this with WinCairo build and it was successful building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373004</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 00:44:11 -0800</bug_when>
    <thetext>After submitting I realized I intended to check that the build stops if the perl script returns an error.

The perl script will return an error if a particular forwarding header already exists but has a different path than the expected path.  This could happen if there are two header files in JavaScriptCore with the same name, which would be unexpected.

I&apos;ll plan to submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373014</commentid>
    <comment_count>3</comment_count>
      <attachid>327160</attachid>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 03:00:10 -0800</bug_when>
    <thetext>Created attachment 327160
Patch set #2 checks if the perl script to create forwarding headers returns an error; if so it causes the batch script to return an error and the build stops.

hmmm...  I realize my patch isn&apos;t formatted quite right.  Some time later I suppose I&apos;ll have to figure out why prepare-ChangeLog is dying:

D:\git\webkit-upstream&gt;perl Tools\Scripts\prepare-ChangeLog --git-commit=HEAD~1...HEAD
  Running status to find changed, added, or removed files.
  Reviewing diff to determine which lines changed.
  Extracting affected function names from source files.
Use of uninitialized value $first_line in pattern match (m//) at Tools\Scripts\prepare-ChangeLog line 765.
  Change author: Mark Salisbury &lt;mark.salisbury@hp.com&gt;.
  Editing the Source\JavaScriptCore\ChangeLog file.
-- Please remember to include a detailed description in your ChangeLog entry. --
-- See &lt;http://webkit.org/coding/contributing.html&gt; for more info --

I found a bug in webkit-patch if SVN is not installed...  I&apos;ll have to submit a fix for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373017</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-11-17 03:17:01 -0800</bug_when>
    <thetext>(In reply to Mark Salisbury from comment #3)
&gt; I found a bug in webkit-patch if SVN is not installed...  I&apos;ll have to
&gt; submit a fix for that.

Not sure if that is a bug. The WebKit repository uses SVN. This means that if you want to use git and use the developer tools for sending patches and committing you need to configure also the git-svn integration as described https://webkit.org/getting-the-code/#checking-out-with-git</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373019</commentid>
    <comment_count>5</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 03:27:57 -0800</bug_when>
    <thetext>I think this patch will be rejected because of what is said in my quote. PlatformWin.cmake is used by both WinCairo and AppleWin, and it&apos;s nothing like generic support of platform Windows in WebKit, no, it&apos;s port-specific build system like PlatformGTK.cmake or PlatformWPE.cmake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373020</commentid>
    <comment_count>6</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 03:30:11 -0800</bug_when>
    <thetext>If patch is changed to be WinCairo-specific it might be accepted if Sony folks have nothing against it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373022</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 03:51:13 -0800</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #4)
&gt; (In reply to Mark Salisbury from comment #3)
&gt; &gt; I found a bug in webkit-patch if SVN is not installed...  I&apos;ll have to
&gt; &gt; submit a fix for that.
&gt; 
&gt; Not sure if that is a bug. The WebKit repository uses SVN. This means that
&gt; if you want to use git and use the developer tools for sending patches and
&gt; committing you need to configure also the git-svn integration as described
&gt; https://webkit.org/getting-the-code/#checking-out-with-git

Interesting.  Seems like SVN should only be required if you want to commit directly to SVN.  I read this page:

https://trac.webkit.org/wiki/UsingGitWithWebKit

and while it doesn&apos;t say you don&apos;t need to install SVN, it says tools have been updated to work with a GIT workflow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373023</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 03:54:50 -0800</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #5)
&gt; I think this patch will be rejected because of what is said in my quote.
&gt; PlatformWin.cmake is used by both WinCairo and AppleWin, and it&apos;s nothing
&gt; like generic support of platform Windows in WebKit, no, it&apos;s port-specific
&gt; build system like PlatformGTK.cmake or PlatformWPE.cmake

Right.  What I&apos;m ultimately working on is running WPE on Windows, but I&apos;m not trying to upstream anything directly related to that yet.

I think fundamentally that making copies of headers is going to cause headaches down the road, if it hasn&apos;t already (for folks besides me).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373024</commentid>
    <comment_count>9</comment_count>
      <attachid>327160</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 04:10:22 -0800</bug_when>
    <thetext>Comment on attachment 327160
Patch set #2 checks if the perl script to create forwarding headers returns an error; if so it causes the batch script to return an error and the build stops.

View in context: https://bugs.webkit.org/attachment.cgi?id=327160&amp;action=review

&gt; Source/JavaScriptCore/PlatformWin.cmake:44
&gt; +file(WRITE &quot;${JavaScriptCore_POST_BUILD_COMMAND}&quot; &quot;perl ${JAVASCRIPTCORE_DIR}/Scripts/make-forwarding-headers.pl \&quot;${DERIVED_SOURCES_DIR}/JavaScriptCore/*.h\&quot; \&quot;${DERIVED_SOURCES_DIR}/JavaScriptCore\&quot; \&quot;${FORWARDING_HEADERS_DIR}/JavaScriptCore\&quot;\n&quot;)

I think better approach would be to pass list of globs as arguments to one script invocation, and ditch preBuild.cmd file altogether, replacing JavaScriptCore_PRE_BUILD_COMMAND with script invocation

At very least use &amp;&amp; to join commands instead of &quot;if %errorlevel% NEQ 0 exit /b 1\n&quot;

&gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:1
&gt; +use strict;

It&apos;s also a good practice to add &quot;use warnings&quot; to all scripts, unfortunately many our scripts don&apos;t

&gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:5
&gt; +my $searchPath = shift;

you&apos;ll need Getopt::Long

&gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:10
&gt; +foreach(@headers) {

use explicit name for iterator

&gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:12
&gt; +    my $forwardingHeader = $forwardingDir.&apos;/&apos;.$file;

use File::Spec-&gt;join

&gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:15
&gt; +        open (HEADER, $forwardingHeader) or die(&quot;Unable to open $forwardingHeader&quot;);

Barewords for file handles are bad practice, use my $header

Don&apos;t forget to add $! into your die messages

open without &apos;&lt;&apos; is fragile, if it happens that file name starts with special character it may lead to unexpected result

&gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:21
&gt; +        print &quot;Creating forwarding header $forwardingHeader with #include \&quot;$includePath/$file\&quot;\n&quot;;

Don&apos;t duplicate $fileContent here, chomp it, or add &quot;\n&quot; in the next statement

&gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:24
&gt; +    close(HEADER);

Better check errors in close too. This may not be incredibly useful for files, but for other types of handles it&apos;s really needed (e.g. pipes). Just keep in mind</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373025</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 04:25:37 -0800</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #9)
&gt; Comment on attachment 327160 [details]
&gt; Patch set #2 checks if the perl script to create forwarding headers returns
&gt; an error; if so it causes the batch script to return an error and the build
&gt; stops.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327160&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/PlatformWin.cmake:44
&gt; &gt; +file(WRITE &quot;${JavaScriptCore_POST_BUILD_COMMAND}&quot; &quot;perl ${JAVASCRIPTCORE_DIR}/Scripts/make-forwarding-headers.pl \&quot;${DERIVED_SOURCES_DIR}/JavaScriptCore/*.h\&quot; \&quot;${DERIVED_SOURCES_DIR}/JavaScriptCore\&quot; \&quot;${FORWARDING_HEADERS_DIR}/JavaScriptCore\&quot;\n&quot;)
&gt; 
&gt; I think better approach would be to pass list of globs as arguments to one
&gt; script invocation, and ditch preBuild.cmd file altogether, replacing
&gt; JavaScriptCore_PRE_BUILD_COMMAND with script invocation

That was my approach on my first pass.  I had trouble with CMake and multiple lines...  I could give it another shot though.

&gt; 
&gt; At very least use &amp;&amp; to join commands instead of &quot;if %errorlevel% NEQ 0 exit
&gt; /b 1\n&quot;
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:1
&gt; &gt; +use strict;
&gt; 
&gt; It&apos;s also a good practice to add &quot;use warnings&quot; to all scripts,
&gt; unfortunately many our scripts don&apos;t
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:5
&gt; &gt; +my $searchPath = shift;
&gt; 
&gt; you&apos;ll need Getopt::Long
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:10
&gt; &gt; +foreach(@headers) {
&gt; 
&gt; use explicit name for iterator
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:12
&gt; &gt; +    my $forwardingHeader = $forwardingDir.&apos;/&apos;.$file;
&gt; 
&gt; use File::Spec-&gt;join
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:15
&gt; &gt; +        open (HEADER, $forwardingHeader) or die(&quot;Unable to open $forwardingHeader&quot;);
&gt; 
&gt; Barewords for file handles are bad practice, use my $header
&gt; 
&gt; Don&apos;t forget to add $! into your die messages
&gt; 
&gt; open without &apos;&lt;&apos; is fragile, if it happens that file name starts with
&gt; special character it may lead to unexpected result
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:21
&gt; &gt; +        print &quot;Creating forwarding header $forwardingHeader with #include \&quot;$includePath/$file\&quot;\n&quot;;
&gt; 
&gt; Don&apos;t duplicate $fileContent here, chomp it, or add &quot;\n&quot; in the next
&gt; statement
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/make-forwarding-headers.pl:24
&gt; &gt; +    close(HEADER);
&gt; 
&gt; Better check errors in close too. This may not be incredibly useful for
&gt; files, but for other types of handles it&apos;s really needed (e.g. pipes). Just
&gt; keep in mind

Great suggestions.  perl isn&apos;t my strongest area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373026</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 05:08:05 -0800</bug_when>
    <thetext>OK, on the first suggestion - scrap the preBuild.cmd on postBuild.cmd scripts - I tried again.

I&apos;m running into a problem with quotes and I think *maybe* this is why these were written as .cmd files in the first place.

CMake uses one set of rules for quoting strings when writing to a file, which seem sane, but for building up a string directly quotes get wonky fast.

For example, a line like this:

  set(var &quot;${var}here is some text \&quot;now it is quoted\&quot;&quot;)

ends up leaving the quotes at the beginning and end of the line.  and the escapes are also left in.

I also tried this:

  set(var ${var}here is some text &quot;now it is quoted&quot;)

this takes quotes out completely.

And this:

  set(var ${var}here is some text \&quot;now it is quoted\&quot;)

leaves the escapes in.

So I&apos;m going to stick with .cmd files unless someone can show me an example of how to concatenate strings with quotes successfully.

I&apos;m thinking not to &apos;&amp;&amp;&apos; all the script invocations together because there is a limit on how many characters you can have for a single command.  I read it&apos;s 8192 chars and we&apos;re very close to that.

As far as globbing all the dirs together for a single invocation, I&apos;m trying to do what I think is a little easier to read.  It seems to execute plenty fast with multiple invocations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373029</commentid>
    <comment_count>12</comment_count>
      <attachid>327163</attachid>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 05:46:36 -0800</bug_when>
    <thetext>Created attachment 327163
Proposed fix

I believe I addressed everything you requested in the perl script with the exception of:

&quot;Don&apos;t duplicate $fileContent here, chomp it, or add &quot;\n&quot; in the next statement&quot;

I wasn&apos;t sure how to interpret that...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373034</commentid>
    <comment_count>13</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 05:50:52 -0800</bug_when>
    <thetext>I mean just print chomp($fileContent) instead of duplicating &quot;#include...&quot;, or don&apos;t add trailing \n when $fileContent is assigned, and do print $header $fileContent, &quot;\n&quot; in the next line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373035</commentid>
    <comment_count>14</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 05:52:10 -0800</bug_when>
    <thetext>Actually I don&apos;t think you need to mess with this code at all, if you are only interested in WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373036</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 05:58:22 -0800</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #14)
&gt; Actually I don&apos;t think you need to mess with this code at all, if you are
&gt; only interested in WPE

While brining up a WPE build on Windows we discovered that we needed the forwarding headers for JavaScriptCore.  We copied the same xcopy code that Windows builds use.  Then later I started getting zillions of compile errors from multiply defined symbols.  Some even caused compiler crashes.

So I analyzed the problem, decided the root of the problem was exactly what this bug says.

As far as how we might introduce a WPE build on Windows, it&apos;d be nice to avoid copying the code but perhaps locating common OS(WINDOWS) code to one place.  Even if we don&apos;t do that, I think it still is logical to fix this for Windows builds too.  I think they will likely see it sooner or later.

If you guys don&apos;t believe this is fundamentally a potential problem (of copying headers), then we can close this bug.

Thanks for your time so far!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373039</commentid>
    <comment_count>16</comment_count>
      <attachid>327166</attachid>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 06:06:59 -0800</bug_when>
    <thetext>Created attachment 327166
Proposed fix

OK, got it.  Removed the trailing \n.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373041</commentid>
    <comment_count>17</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 06:15:22 -0800</bug_when>
    <thetext>WPE uses Source/WebKit/Scripts/generate-forwarding-headers.pl which should generate all needed forwarding headers (maybe you need to add --platform win there though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373042</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 06:29:22 -0800</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #17)
&gt; WPE uses Source/WebKit/Scripts/generate-forwarding-headers.pl which should
&gt; generate all needed forwarding headers (maybe you need to add --platform win
&gt; there though)

PlatformWin, GTK, and WPE all use that script.

You have a good point though.  Why was the xcopy forwarding header script ever added in the first place?  I&apos;ll look at the history when this was introduced.

It produces far more forwarding headers for JavaSriptCore than Source/WebKit/Scripts/generate-forwarding-headers.pl does...

Until I have an answer I would suggest not taking this patch.  I think there&apos;s still a problem here (xcopy causes problems) but I&apos;m not sure I&apos;m solving it in the right way.

Is there a way to clear review? commit-queue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373043</commentid>
    <comment_count>19</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 06:34:49 -0800</bug_when>
    <thetext>(In reply to Mark Salisbury from comment #18)
&gt; (In reply to Konstantin Tokarev from comment #17)
&gt; &gt; WPE uses Source/WebKit/Scripts/generate-forwarding-headers.pl which should
&gt; &gt; generate all needed forwarding headers (maybe you need to add --platform win
&gt; &gt; there though)
&gt; 
&gt; PlatformWin, GTK, and WPE all use that script.

Out of tree Qt port (which I&apos;m developing) also uses it (on Windows too).

&gt; 
&gt; You have a good point though.  Why was the xcopy forwarding header script
&gt; ever added in the first place?  I&apos;ll look at the history when this was
&gt; introduced.

Because AppleWin needs to support separate building of WTF, WebCore, and WebKit, they want to copy all header files.

&gt; 
&gt; It produces far more forwarding headers for JavaSriptCore than
&gt; Source/WebKit/Scripts/generate-forwarding-headers.pl does...

Just as planned.

&gt; 
&gt; Until I have an answer I would suggest not taking this patch.  I think
&gt; there&apos;s still a problem here (xcopy causes problems) but I&apos;m not sure I&apos;m
&gt; solving it in the right way.
&gt; 
&gt; Is there a way to clear review? commit-queue?

Same way as you set them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373044</commentid>
    <comment_count>20</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-11-17 06:40:03 -0800</bug_when>
    <thetext>(In reply to Mark Salisbury from comment #0)
&gt; When forwarding headers are copies of header files, and both the forwarding
&gt; header version and the real version of the header file are included, compile
&gt; errors arise from symbols being defined multiple times.
&gt; 
&gt; Instead of copying the header file we should create a forwarding header that
&gt; contains a #include path to the real header.  The copy command is unique to
&gt; the Windows...
&gt; 
&gt; Konstantin Tokarev said in reply (see to mail subject &quot;[webkit-dev] unified
&gt; sources build + forwarding headers that are copies&quot;) :
&gt; 
&gt; &quot;AFAIK Windows uses different approach because AppleWin needs to support
&gt; separate building of WTF, WebCore, and WebKit.&quot;

It’s my understanding that the copy is present in ALL Apple ports. I think it’s better for the project as a whole for everyone to move to copying the headers for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373053</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-17 07:23:45 -0800</bug_when>
    <thetext>Note: Apple&apos;s CMake build does not copy the headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373059</commentid>
    <comment_count>22</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-11-17 07:52:02 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #21)
&gt; Note: Apple&apos;s CMake build does not copy the headers.

But it’s not shipping anything.

Is there any reason why we shouldn’t just copy the headers in CMake ports?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373069</commentid>
    <comment_count>23</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-17 08:21:02 -0800</bug_when>
    <thetext>&gt;Is there any reason why we shouldn’t just copy the headers in CMake ports?

You mean avoid copying? Because doing otherwise is a regression and leads to possible #pragma once problems described by Mark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373152</commentid>
    <comment_count>24</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-11-17 10:52:23 -0800</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #23)
&gt; &gt;Is there any reason why we shouldn’t just copy the headers in CMake ports?
&gt; 
&gt; You mean avoid copying? Because doing otherwise is a regression and leads to
&gt; possible #pragma once problems described by Mark.

I&apos;m saying why don&apos;t we fix what&apos;s wrong within CMake or whatever else is happening to cause the #pragma once issue so it is consistent with what Apple is doing when they just copy the headers.

If we think of WTF, JSC, etc as something that can be built independently then at the end we would have an &quot;install&quot; step that would put the headers where they need to be so WebCore, WebKit, etc can build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373160</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-17 10:57:47 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #24)
&gt; (In reply to Konstantin Tokarev from comment #23)
&gt; &gt; &gt;Is there any reason why we shouldn’t just copy the headers in CMake ports?
&gt; &gt; 
&gt; &gt; You mean avoid copying? Because doing otherwise is a regression and leads to
&gt; &gt; possible #pragma once problems described by Mark.
&gt; 
&gt; I&apos;m saying why don&apos;t we fix what&apos;s wrong within CMake or whatever else is
&gt; happening to cause the #pragma once issue so it is consistent with what
&gt; Apple is doing when they just copy the headers.

Copying headers is fundamentally incompatible with #pragma once.

The real question here is: why does Apple Windows build at all? I would expect it to be broken too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373173</commentid>
    <comment_count>26</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-11-17 11:27:52 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #25)
&gt; (In reply to Don Olmstead from comment #24)
&gt; &gt; (In reply to Konstantin Tokarev from comment #23)
&gt; &gt; &gt; &gt;Is there any reason why we shouldn’t just copy the headers in CMake ports?
&gt; &gt; &gt; 
&gt; &gt; &gt; You mean avoid copying? Because doing otherwise is a regression and leads to
&gt; &gt; &gt; possible #pragma once problems described by Mark.
&gt; &gt; 
&gt; &gt; I&apos;m saying why don&apos;t we fix what&apos;s wrong within CMake or whatever else is
&gt; &gt; happening to cause the #pragma once issue so it is consistent with what
&gt; &gt; Apple is doing when they just copy the headers.
&gt; 
&gt; Copying headers is fundamentally incompatible with #pragma once.
&gt; 
&gt; The real question here is: why does Apple Windows build at all? I would
&gt; expect it to be broken too.

Not everything is using #pragma once. See https://bugs.webkit.org/show_bug.cgi?id=174986 where some wtf headers aren&apos;t working. Then there&apos;s https://bugs.webkit.org/show_bug.cgi?id=177202. These are all fundamentally the same bug.

If you want to get an idea on what is and isn&apos;t using #pragma once https://github.com/cgmb/guardonce is a nice python utility.

Its my understanding that Apple has a HARD requirement that each library be able to be built independently. There is also the requirement that if a library can be built as a framework then the headers need to be flat, eg #include &lt;WebCore/Foo.h&gt;. That is the only reason pal and wtf are not flat since they&apos;re built statically.

Internally we&apos;ve been looking at how to solve this with copying for all CMake ports. We don&apos;t have anything completed yet but we are hitting the same issue Mark is hitting with WebKit(2) support on WinCairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373434</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 17:01:35 -0800</bug_when>
    <thetext>I believe that both Windows ports (AppleWin, WinCairo) have the same xcopy logic to create forwarding headers.

Source\JavaScriptCore\PlatformWin.cmake is used by both CMake builds.

The copy was introduced here:
https://bugs.webkit.org/show_bug.cgi?id=148198

&quot;CMake Windows build should not include files directly from other Source direc...&quot;

At that time I don&apos;t think #pragma once was being used.

The rationale was as has been mentioned so that the next projects (frameworks) could include previous frameworks with a simple #include &lt;JavaScriptCore/SomeJSFile.h&gt;.

There&apos;s no careful selection of what public .h files should be, and it&apos;d be hard to do so anyway since one .h file can lead to many others, sometimes ones you don&apos;t expect.

So here&apos;s where I am with this now.  My current patch has an incompatibility with WebKit/Scripts/generate-forwarding-headers.pl.  They both try to create forwarding headers for some of the same JavaScriptCore files.  I print the full path to the .h file and WebKit/Scripts/generate-forwarding-headers.pl lists out a relative path.  WebKit/Scripts/generate-forwarding-headers.pl overwrites that path that the script in this patch products.

The reason I went with the full path is that I saw a problem with infinite recursion of a forwarding header include.  The forwarding header include path came before the real directory, so once an include started on a forwarding header, it tried to include the exact same file again.  A #pragma once in the forwarding header would prevent the re-inclusion, however, it would also fail to include the real .h file.

The infinite recursion to me means that there is some ordering difference in header search paths between my build and WinCairo build.

I see a couple of options, if I am to pursue preventing copying of .h files (which I hope others agree fundamentally doesn&apos;t make sense):

1) Modify WebKit/Scripts/generate-forwarding-headers.pl so that it prints the full path to the real header.  Then the order of header search paths doesn&apos;t matter.  This does make the derived sources output (forwarding headers) not relocatable.  I don&apos;t know if it needs to be.  I believe these .h files are just used in an internal build.  The real public .h files from WebKit are JavaScriptCore API and WebKit API files.

2) Figure out why my Win WPE build has a different header search path order than WinCairo.  The forwarding header include path has to come AFTER the include search path that triggers finding the real .h file.  In practice I think that means the forwarding header path should come last.

Thoughts?

Thanks everyone.  I&apos;ve been a downstream user of WebKit for quite a while now and feel bad that I haven&apos;t been able to give back more.  I&apos;m hoping to be a better citizen as we are now working on updating our WebKit version (used in HP products).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373450</commentid>
    <comment_count>28</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-17 17:28:09 -0800</bug_when>
    <thetext>(In reply to Mark Salisbury from comment #27)
 
&gt; 2) Figure out why my Win WPE build has a different header search path order
&gt; than WinCairo.  The forwarding header include path has to come AFTER the
&gt; include search path that triggers finding the real .h file.  In practice I
&gt; think that means the forwarding header path should come last.

It doesn&apos;t have a different search order.  WinCairo has ForwardingHeaders first too.  This wasn&apos;t a problem when the files were copies.

I still believe the same options apply though:

1) Make the forwarding header paths full paths
2) Move fowarding header include path to the end of the includes paths

I like #1 better.

For the curious, here&apos;s the example I included in e-mail about how the same header file gets included twice.  There were many others:

First source file including ArrayBufferSharingMode.h:

1&gt;Note: including file: D:\git\webkit-org\Source\WebCore\css/DOMMatrix.cpp
1&gt;Note: including file:  D:\git\webkit-org\Source\WebCore\config.h
1&gt;Note: including file:  d:\git\webkit-org\source\webcore\css\DOMMatrix.h
1&gt;Note: including file:   d:\git\webkit-org\source\webcore\css\DOMMatrixReadOnly.h
1&gt;Note: including file:    d:\git\webkit-org\source\webcore\css\DOMMatrixInit.h
1&gt;Note: including file:     d:\git\webkit-org\source\webcore\css\DOMMatrix2DInit.h
1&gt;Note: including file:    D:\git\webkit-org\Source\WebCore\bindings\js\ScriptWrappable.h
1&gt;Note: including file:     D:\git\webkit-org\Source\JavaScriptCore\heap/Weak.h
1&gt;Note: including file:    D:\git\webkit-org\Source\WebCore\platform\graphics\transforms\TransformationMatrix.h
1&gt;Note: including file:     D:\git\webkit-org\Source\WebCore\platform\graphics\FloatPoint.h
1&gt;Note: including file:      d:\git\webkit-org\source\webcore\platform\graphics\FloatSize.h
1&gt;Note: including file:       d:\git\webkit-org\source\webcore\platform\graphics\IntPoint.h
1&gt;Note: including file:        d:\git\webkit-org\source\webcore\platform\graphics\IntSize.h
1&gt;Note: including file:     D:\git\webkit-org\Source\WebCore\platform\graphics\FloatPoint3D.h
1&gt;Note: including file:    D:\git\webkit-org\Source\JavaScriptCore\runtime/Float32Array.h
1&gt;Note: including file:     d:\git\webkit-org\source\javascriptcore\runtime\TypedArrays.h
1&gt;Note: including file:      d:\git\webkit-org\source\javascriptcore\runtime\GenericTypedArrayView.h
1&gt;Note: including file:       d:\git\webkit-org\source\javascriptcore\runtime\ArrayBuffer.h
1&gt;Note: including file:        d:\git\webkit-org\source\javascriptcore\runtime\ArrayBufferSharingMode.h

Second source file including ArrayBufferSharingMode.h:

1&gt;Note: including file: D:\git\webkit-org\Source\WebCore\css/DOMMatrixReadOnly.cpp
1&gt;Note: including file:  D:\git\webkit-org\Source\WebCore\config.h
1&gt;Note: including file:  d:\git\webkit-org\source\webcore\css\CSSToLengthConversionData.h
1&gt;Note: including file:  D:\git\webkit-org\Source\WebCore\dom\DOMPoint.h
1&gt;Note: including file:   d:\git\webkit-org\source\webcore\dom\DOMPointReadOnly.h
1&gt;Note: including file:    d:\git\webkit-org\source\webcore\dom\DOMPointInit.h
1&gt;Note: including file:  d:\git\webkit-org\source\webcore\css\TransformFunctions.h
1&gt;Note: including file:   D:\git\webkit-org\Source\WebCore\platform\graphics\transforms\TransformOperations.h
1&gt;Note: including file:    D:\git\webkit-org\Source\WebCore\platform\graphics\LayoutSize.h
1&gt;Note: including file:    d:\git\webkit-org\source\webcore\platform\graphics\transforms\TransformOperation.h
1&gt;Note: including file:  D:\git\webkit-org\WebKitBuild\Debug\DerivedSources\ForwardingHeaders\JavaScriptCore/GenericTypedArrayViewInlines.h
1&gt;Note: including file:   d:\git\webkit-org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\GenericTypedArrayView.h
1&gt;Note: including file:    d:\git\webkit-org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\ArrayBuffer.h
1&gt;Note: including file:     d:\git\webkit-org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\ArrayBufferSharingMode.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373804</commentid>
    <comment_count>29</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-11-20 10:50:31 -0800</bug_when>
    <thetext>(In reply to Mark Salisbury from comment #28)
&gt; (In reply to Mark Salisbury from comment #27)
&gt;  
&gt; &gt; 2) Figure out why my Win WPE build has a different header search path order
&gt; &gt; than WinCairo.  The forwarding header include path has to come AFTER the
&gt; &gt; include search path that triggers finding the real .h file.  In practice I
&gt; &gt; think that means the forwarding header path should come last.
&gt; 
&gt; It doesn&apos;t have a different search order.  WinCairo has ForwardingHeaders
&gt; first too.  This wasn&apos;t a problem when the files were copies.
&gt; 
&gt; I still believe the same options apply though:
&gt; 
&gt; 1) Make the forwarding header paths full paths
&gt; 2) Move fowarding header include path to the end of the includes paths
&gt; 
&gt; I like #1 better.
&gt; 
&gt; For the curious, here&apos;s the example I included in e-mail about how the same
&gt; header file gets included twice.  There were many others:
&gt; 
&gt; First source file including ArrayBufferSharingMode.h:
&gt; 
&gt; 1&gt;Note: including file: D:\git\webkit-org\Source\WebCore\css/DOMMatrix.cpp
&gt; 1&gt;Note: including file:  D:\git\webkit-org\Source\WebCore\config.h
&gt; 1&gt;Note: including file:  d:\git\webkit-org\source\webcore\css\DOMMatrix.h
&gt; 1&gt;Note: including file:  
&gt; d:\git\webkit-org\source\webcore\css\DOMMatrixReadOnly.h
&gt; 1&gt;Note: including file:   
&gt; d:\git\webkit-org\source\webcore\css\DOMMatrixInit.h
&gt; 1&gt;Note: including file:    
&gt; d:\git\webkit-org\source\webcore\css\DOMMatrix2DInit.h
&gt; 1&gt;Note: including file:   
&gt; D:\git\webkit-org\Source\WebCore\bindings\js\ScriptWrappable.h
&gt; 1&gt;Note: including file:    
&gt; D:\git\webkit-org\Source\JavaScriptCore\heap/Weak.h
&gt; 1&gt;Note: including file:   
&gt; D:\git\webkit-
&gt; org\Source\WebCore\platform\graphics\transforms\TransformationMatrix.h
&gt; 1&gt;Note: including file:    
&gt; D:\git\webkit-org\Source\WebCore\platform\graphics\FloatPoint.h
&gt; 1&gt;Note: including file:     
&gt; d:\git\webkit-org\source\webcore\platform\graphics\FloatSize.h
&gt; 1&gt;Note: including file:      
&gt; d:\git\webkit-org\source\webcore\platform\graphics\IntPoint.h
&gt; 1&gt;Note: including file:       
&gt; d:\git\webkit-org\source\webcore\platform\graphics\IntSize.h
&gt; 1&gt;Note: including file:    
&gt; D:\git\webkit-org\Source\WebCore\platform\graphics\FloatPoint3D.h
&gt; 1&gt;Note: including file:   
&gt; D:\git\webkit-org\Source\JavaScriptCore\runtime/Float32Array.h
&gt; 1&gt;Note: including file:    
&gt; d:\git\webkit-org\source\javascriptcore\runtime\TypedArrays.h
&gt; 1&gt;Note: including file:     
&gt; d:\git\webkit-org\source\javascriptcore\runtime\GenericTypedArrayView.h
&gt; 1&gt;Note: including file:      
&gt; d:\git\webkit-org\source\javascriptcore\runtime\ArrayBuffer.h
&gt; 1&gt;Note: including file:       
&gt; d:\git\webkit-org\source\javascriptcore\runtime\ArrayBufferSharingMode.h
&gt; 
&gt; Second source file including ArrayBufferSharingMode.h:
&gt; 
&gt; 1&gt;Note: including file:
&gt; D:\git\webkit-org\Source\WebCore\css/DOMMatrixReadOnly.cpp
&gt; 1&gt;Note: including file:  D:\git\webkit-org\Source\WebCore\config.h
&gt; 1&gt;Note: including file: 
&gt; d:\git\webkit-org\source\webcore\css\CSSToLengthConversionData.h
&gt; 1&gt;Note: including file:  D:\git\webkit-org\Source\WebCore\dom\DOMPoint.h
&gt; 1&gt;Note: including file:  
&gt; d:\git\webkit-org\source\webcore\dom\DOMPointReadOnly.h
&gt; 1&gt;Note: including file:   
&gt; d:\git\webkit-org\source\webcore\dom\DOMPointInit.h
&gt; 1&gt;Note: including file: 
&gt; d:\git\webkit-org\source\webcore\css\TransformFunctions.h
&gt; 1&gt;Note: including file:  
&gt; D:\git\webkit-
&gt; org\Source\WebCore\platform\graphics\transforms\TransformOperations.h
&gt; 1&gt;Note: including file:   
&gt; D:\git\webkit-org\Source\WebCore\platform\graphics\LayoutSize.h
&gt; 1&gt;Note: including file:   
&gt; d:\git\webkit-
&gt; org\source\webcore\platform\graphics\transforms\TransformOperation.h
&gt; 1&gt;Note: including file: 
&gt; D:\git\webkit-
&gt; org\WebKitBuild\Debug\DerivedSources\ForwardingHeaders\JavaScriptCore/
&gt; GenericTypedArrayViewInlines.h
&gt; 1&gt;Note: including file:  
&gt; d:\git\webkit-
&gt; org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\Generic
&gt; TypedArrayView.h
&gt; 1&gt;Note: including file:   
&gt; d:\git\webkit-
&gt; org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\ArrayBu
&gt; ffer.h
&gt; 1&gt;Note: including file:    
&gt; d:\git\webkit-
&gt; org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\ArrayBu
&gt; fferSharingMode.h

What if within the JavaScriptCore/CMakeLists.txt if you change JavaScriptCore_INCLUDE_DIRECTORIES into JavaScriptCore_PRIVATE_INCLUDE_DIRECTORIES? Then those include directories shouldn&apos;t propagate to WebCore and you shouldn&apos;t end up in d:\git\webkit-org\source\javascriptcore\runtime\ArrayBufferSharingMode.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373805</commentid>
    <comment_count>30</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-20 10:52:09 -0800</bug_when>
    <thetext>Then we again end up with duplicated include directory listings in each CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373806</commentid>
    <comment_count>31</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-11-20 10:52:53 -0800</bug_when>
    <thetext>It makes sense to make them private if headers are copied though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374995</commentid>
    <comment_count>32</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-27 10:38:11 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #20)
&gt; It’s my understanding that the copy is present in ALL Apple ports. I think
&gt; it’s better for the project as a whole for everyone to move to copying the
&gt; headers for consistency.

I agree.

(In reply to Michael Catanzaro from comment #25)
&gt; Copying headers is fundamentally incompatible with #pragma once.

This is not true if we include directories well.  For example, when building WTF we should include the Source/WTF directory and not the directory containing the copies and when building everything else we should include the directory containing the copies.  When building JSC we should include Source/JavaScriptCore and not the directory containing the copies and when building everything else we should include the directory containing the copies.  Etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375569</commentid>
    <comment_count>33</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-28 15:29:55 -0800</bug_when>
    <thetext>&gt; What if within the JavaScriptCore/CMakeLists.txt if you change
&gt; JavaScriptCore_INCLUDE_DIRECTORIES into
&gt; JavaScriptCore_PRIVATE_INCLUDE_DIRECTORIES? Then those include directories
&gt; shouldn&apos;t propagate to WebCore and you shouldn&apos;t end up in
&gt; d:\git\webkit-org\source\javascriptcore\runtime\ArrayBufferSharingMode.h.

I&apos;ll try that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375580</commentid>
    <comment_count>34</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-28 15:52:45 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #32)
&gt; (In reply to Don Olmstead from comment #20)
&gt; &gt; It’s my understanding that the copy is present in ALL Apple ports. I think
&gt; &gt; it’s better for the project as a whole for everyone to move to copying the
&gt; &gt; headers for consistency.
&gt; 
&gt; I agree.
&gt; 
&gt; (In reply to Michael Catanzaro from comment #25)
&gt; &gt; Copying headers is fundamentally incompatible with #pragma once.
&gt; 
&gt; This is not true if we include directories well.  For example, when building
&gt; WTF we should include the Source/WTF directory and not the directory
&gt; containing the copies and when building everything else we should include
&gt; the directory containing the copies.  When building JSC we should include
&gt; Source/JavaScriptCore and not the directory containing the copies and when
&gt; building everything else we should include the directory containing the
&gt; copies.  Etc.

Sounds like that would work.  I do think having copies of .h files in different places is kludgy.

As long as the discussion is around what&apos;s ideal, wouldn&apos;t it be better not to need forwarding headers at all?

What if all #includes were relative to either the top level source directory or to the derived sources directory?  This might even make compiles a little bit faster since they wouldn&apos;t have to search so many directories.  It&apos;d make build output files smaller ;)  It would make code more readable.

What problems would arise from this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375589</commentid>
    <comment_count>35</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-11-28 16:17:00 -0800</bug_when>
    <thetext>(In reply to Mark Salisbury from comment #34)
&gt; (In reply to Alex Christensen from comment #32)
&gt; &gt; (In reply to Don Olmstead from comment #20)
&gt; &gt; &gt; It’s my understanding that the copy is present in ALL Apple ports. I think
&gt; &gt; &gt; it’s better for the project as a whole for everyone to move to copying the
&gt; &gt; &gt; headers for consistency.
&gt; &gt; 
&gt; &gt; I agree.
&gt; &gt; 
&gt; &gt; (In reply to Michael Catanzaro from comment #25)
&gt; &gt; &gt; Copying headers is fundamentally incompatible with #pragma once.
&gt; &gt; 
&gt; &gt; This is not true if we include directories well.  For example, when building
&gt; &gt; WTF we should include the Source/WTF directory and not the directory
&gt; &gt; containing the copies and when building everything else we should include
&gt; &gt; the directory containing the copies.  When building JSC we should include
&gt; &gt; Source/JavaScriptCore and not the directory containing the copies and when
&gt; &gt; building everything else we should include the directory containing the
&gt; &gt; copies.  Etc.
&gt; 
&gt; Sounds like that would work.  I do think having copies of .h files in
&gt; different places is kludgy.
&gt; 
&gt; As long as the discussion is around what&apos;s ideal, wouldn&apos;t it be better not
&gt; to need forwarding headers at all?
&gt; 
&gt; What if all #includes were relative to either the top level source directory
&gt; or to the derived sources directory?  This might even make compiles a little
&gt; bit faster since they wouldn&apos;t have to search so many directories.  It&apos;d
&gt; make build output files smaller ;)  It would make code more readable.
&gt; 
&gt; What problems would arise from this?

https://bugs.webkit.org/show_bug.cgi?id=180063#c5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376443</commentid>
    <comment_count>36</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2017-11-30 12:06:36 -0800</bug_when>
    <thetext>Apple has a requirement for forwarding headers to be copies:

  https://bugs.webkit.org/show_bug.cgi?id=180063#c5

The problem I&apos;m running into can likely be addressed by ensuring that PRIVATE headers aren&apos;t leaked into the next project&apos;s include paths.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327155</attachid>
            <date>2017-11-17 00:42:11 -0800</date>
            <delta_ts>2017-11-17 03:00:10 -0800</delta_ts>
            <desc>Proposed fix</desc>
            <filename>0001-Win-forwarding-headers-should-not-be-copies.patch</filename>
            <type>text/plain</type>
            <size>4041</size>
            <attacher name="Mark Salisbury">mark.salisbury</attacher>
            
              <data encoding="base64">RnJvbSAwMGNmMzg0NGUwNDFkOWYzNjI2OTlhMWVmY2E3ZjMxNDM4N2ZkODdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFNhbGlzYnVyeSA8bWFyay5zYWxpc2J1cnlAaHAuY29t
PgpEYXRlOiBGcmksIDE3IE5vdiAyMDE3IDA5OjU2OjQwICswOTAwClN1YmplY3Q6IFtQQVRDSF0g
W1dpbl0gZm9yd2FyZGluZyBoZWFkZXJzIHNob3VsZCBub3QgYmUgY29waWVzCgpGb3J3YXJkaW5n
IGhlYWRlcnMgY3JlYXRlZCBieSBKYXZhU2NyaXB0Q29yZSBhcmUgY3VycmVudGx5IGNvcGllcwpv
ZiBmaWxlcywgbm90IGZpbGVzIHdoaWNoIGhhdmUgYSAjaW5jbHVkZSBwYXRoIHRvIHRoZSByZWFs
IGhlYWRlciBmaWxlLgoKVGhlIHByb2JsZW0gd2l0aCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgaWYg
dGhlIHNhbWUgZmlsZSBlbmRzIHVwIGJlaW5nCmluY2x1ZGVkIHR3aWNlLCBidXQgYXQgZGlmZmVy
ZW50IHBhdGhzLCB0aGUgI3ByYWdtYSBvbmNlIGRvZXMgbm90aGluZwphbmQgY29tcGlsZSBlcnJv
cnMgb2NjdXIgZnJvbSBtdWx0aXBseSBkZWZpbmVkIHN5bWJvbHMuCi0tLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1BsYXRmb3JtV2luLmNtYWtlICAgICAgICAgICAgfCAgOCArKystLS0tCiAuLi4v
U2NyaXB0cy9tYWtlLWZvcndhcmRpbmctaGVhZGVycy5wbCAgICAgICAgICAgICB8IDI1ICsrKysr
KysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgNSBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9tYWtlLWZvcndhcmRpbmctaGVhZGVycy5wbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0
Zm9ybVdpbi5jbWFrZQppbmRleCBiMzQ4ZWFlYWZiYS4uMDIwMmM1ZjFmMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTM0LDE1ICszNCwxMyBAQCBmaWxlKENP
UFkKICkKIAogZmlsZShNQUtFX0RJUkVDVE9SWSAke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0ph
dmFTY3JpcHRDb3JlKQotCiBzZXQoSmF2YVNjcmlwdENvcmVfUFJFX0JVSUxEX0NPTU1BTkQgIiR7
Q01BS0VfQklOQVJZX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvcHJlQnVpbGQu
Y21kIikKIGZpbGUoUkVNT1ZFICIke0phdmFTY3JpcHRDb3JlX1BSRV9CVUlMRF9DT01NQU5EfSIp
CiBmb3JlYWNoIChfZGlyZWN0b3J5ICR7SmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJT
X0RJUkVDVE9SSUVTfSkKLSAgICBmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QUkVfQlVJ
TERfQ09NTUFORH0iICJAeGNvcHkgL3kgL2QgL2YgXCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vJHtf
ZGlyZWN0b3J5fS8qLmhcIiBcIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENv
cmVcIiA+bnVsIDI+bnVsXG4iKQorICAgIGZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3JlX1BS
RV9CVUlMRF9DT01NQU5EfSIgInBlcmwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1NjcmlwdHMvbWFr
ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgXCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vJHtfZGlyZWN0
b3J5fS8qLmhcIiBcIiR7SkFWQVNDUklQVENPUkVfRElSfS8ke19kaXJlY3Rvcnl9XCIgXCIke0ZP
UldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlXCJcbiIpCiBlbmRmb3JlYWNoICgp
Ci0KIHNldChKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkQgIiR7Q01BS0VfQklOQVJZ
X0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvcG9zdEJ1aWxkLmNtZCIpCi1maWxl
KFdSSVRFICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJAeGNvcHkgL3kg
L2QgL2YgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlLyouaFwiIFwiJHtG
T1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZVwiID5udWwgMj5udWxcbiIpCi1m
aWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5
IC95IC9kIC9mIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvKi5oXCIgXCIke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlXCIgPm51
bCAyPm51bFxuIikKK2ZpbGUoV1JJVEUgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01N
QU5EfSIgInBlcmwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1NjcmlwdHMvbWFrZS1mb3J3YXJkaW5n
LWhlYWRlcnMucGwgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlLyouaFwi
IFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZVwiIFwiJHtGT1JXQVJESU5H
X0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZVwiXG4iKQorZmlsZShBUFBFTkQgIiR7SmF2YVNj
cmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgInBlcmwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L1NjcmlwdHMvbWFrZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgXCIke0RFUklWRURfU09VUkNFU19E
SVJ9L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci8qLmhcIiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yXCIgXCIke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9
L0phdmFTY3JpcHRDb3JlXCJcbiIpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9PVVRQVVRfTkFNRSBK
YXZhU2NyaXB0Q29yZSR7REVCVUdfU1VGRklYfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvbWFrZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM5MmY2ZmRhODNmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvbWFrZS1mb3J3YXJkaW5nLWhlYWRlcnMu
cGwKQEAgLTAsMCArMSwyNSBAQAordXNlIHN0cmljdDsKKwordXNlIEZpbGU6OkJhc2VuYW1lOwor
CitteSAkc2VhcmNoUGF0aCA9IHNoaWZ0OworbXkgJGluY2x1ZGVQYXRoID0gc2hpZnQ7CitteSAk
Zm9yd2FyZGluZ0RpciA9IHNoaWZ0OworCitteSBAaGVhZGVycyA9IGdsb2IoJHNlYXJjaFBhdGgp
OworZm9yZWFjaChAaGVhZGVycykgeworICAgIG15ICRmaWxlID0gYmFzZW5hbWUoJF8pOworICAg
IG15ICRmb3J3YXJkaW5nSGVhZGVyID0gJGZvcndhcmRpbmdEaXIuJy8nLiRmaWxlOworICAgIG15
ICRmaWxlQ29udGVudCA9ICIjaW5jbHVkZSBcIiRpbmNsdWRlUGF0aC8kZmlsZVwiXG4iOworICAg
IGlmICgtZSAkZm9yd2FyZGluZ0hlYWRlcikgeworICAgICAgICBvcGVuIChIRUFERVIsICRmb3J3
YXJkaW5nSGVhZGVyKSBvciBkaWUoIlVuYWJsZSB0byBvcGVuICRmb3J3YXJkaW5nSGVhZGVyIik7
CisgICAgICAgIG15ICRleGlzdGluZ0NvbnRlbnQgPSA8SEVBREVSPjsKKyAgICAgICAgJGZpbGVD
b250ZW50IGVxICRleGlzdGluZ0NvbnRlbnQgb3IgZGllKCIkZm9yd2FyZGluZ0hlYWRlciBhbHJl
YWR5IGV4aXN0cyBhbmQgaGFzIGNvbnRlbnQ6XG4gICRleGlzdGluZ0NvbnRlbnRcbmV4cGVjdGVk
OlxuICAkZmlsZUNvbnRlbnRcbiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgb3BlbihI
RUFERVIsICc+JywgJGZvcndhcmRpbmdIZWFkZXIpOworICAgICAgICBwcmludCAiQ3JlYXRpbmcg
Zm9yd2FyZGluZyBoZWFkZXIgJGZvcndhcmRpbmdIZWFkZXIgd2l0aCAjaW5jbHVkZSBcIiRpbmNs
dWRlUGF0aC8kZmlsZVwiXG4iOworICAgICAgICBwcmludCBIRUFERVIgJGZpbGVDb250ZW50Owor
ICAgIH0KKyAgICBjbG9zZShIRUFERVIpOworfQotLSAKMi4xNC4xLndpbmRvd3MuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327160</attachid>
            <date>2017-11-17 03:00:10 -0800</date>
            <delta_ts>2017-11-17 05:46:36 -0800</delta_ts>
            <desc>Patch set #2 checks if the perl script to create forwarding headers returns an error; if so it causes the batch script to return an error and the build stops.</desc>
            <filename>0001-Win-forwarding-headers-should-not-be-copies.patch</filename>
            <type>text/plain</type>
            <size>4314</size>
            <attacher name="Mark Salisbury">mark.salisbury</attacher>
            
              <data encoding="base64">RnJvbSBjYTlhZTA0MDhkMjkyOTc2ZjA1OTZhOWM1ZGU3YjBmMGU3OWMwMjQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFNhbGlzYnVyeSA8bWFyay5zYWxpc2J1cnlAaHAuY29t
PgpEYXRlOiBGcmksIDE3IE5vdiAyMDE3IDA5OjU2OjQwICswOTAwClN1YmplY3Q6IFtQQVRDSF0g
W1dpbl0gZm9yd2FyZGluZyBoZWFkZXJzIHNob3VsZCBub3QgYmUgY29waWVzCgpGb3J3YXJkaW5n
IGhlYWRlcnMgY3JlYXRlZCBieSBKYXZhU2NyaXB0Q29yZSBhcmUgY3VycmVudGx5IGNvcGllcwpv
ZiBmaWxlcywgbm90IGZpbGVzIHdoaWNoIGhhdmUgYSAjaW5jbHVkZSBwYXRoIHRvIHRoZSByZWFs
IGhlYWRlciBmaWxlLgoKVGhlIHByb2JsZW0gd2l0aCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgaWYg
dGhlIHNhbWUgZmlsZSBlbmRzIHVwIGJlaW5nCmluY2x1ZGVkIHR3aWNlLCBidXQgYXQgZGlmZmVy
ZW50IHBhdGhzLCB0aGUgI3ByYWdtYSBvbmNlIGRvZXMgbm90aGluZwphbmQgY29tcGlsZSBlcnJv
cnMgb2NjdXIgZnJvbSBtdWx0aXBseSBkZWZpbmVkIHN5bWJvbHMuCi0tLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1BsYXRmb3JtV2luLmNtYWtlICAgICAgICAgICAgfCAxMSArKysrKy0tLS0tCiAu
Li4vU2NyaXB0cy9tYWtlLWZvcndhcmRpbmctaGVhZGVycy5wbCAgICAgICAgICAgICB8IDI1ICsr
KysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwg
NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9tYWtlLWZvcndhcmRpbmctaGVhZGVycy5wbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQppbmRleCBiMzQ4ZWFlYWZiYS4uNmY2NDg0YjJjYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTM0LDE1ICszNCwxNiBAQCBmaWxl
KENPUFkKICkKIAogZmlsZShNQUtFX0RJUkVDVE9SWSAke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9
L0phdmFTY3JpcHRDb3JlKQotCiBzZXQoSmF2YVNjcmlwdENvcmVfUFJFX0JVSUxEX0NPTU1BTkQg
IiR7Q01BS0VfQklOQVJZX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvcHJlQnVp
bGQuY21kIikKIGZpbGUoUkVNT1ZFICIke0phdmFTY3JpcHRDb3JlX1BSRV9CVUlMRF9DT01NQU5E
fSIpCiBmb3JlYWNoIChfZGlyZWN0b3J5ICR7SmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTfSkKLSAgICBmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QUkVf
QlVJTERfQ09NTUFORH0iICJAeGNvcHkgL3kgL2QgL2YgXCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
JHtfZGlyZWN0b3J5fS8qLmhcIiBcIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlw
dENvcmVcIiA+bnVsIDI+bnVsXG4iKQorICAgIGZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3Jl
X1BSRV9CVUlMRF9DT01NQU5EfSIgInBlcmwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1NjcmlwdHMv
bWFrZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgXCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vJHtfZGly
ZWN0b3J5fS8qLmhcIiBcIiR7SkFWQVNDUklQVENPUkVfRElSfS8ke19kaXJlY3Rvcnl9XCIgXCIk
e0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlXCJcbiIpCisgICAgZmlsZShB
UFBFTkQgIiR7SmF2YVNjcmlwdENvcmVfUFJFX0JVSUxEX0NPTU1BTkR9IiAiaWYgJWVycm9ybGV2
ZWwlIE5FUSAwIGV4aXQgL2IgMVxuIikKIGVuZGZvcmVhY2ggKCkKLQogc2V0KEphdmFTY3JpcHRD
b3JlX1BPU1RfQlVJTERfQ09NTUFORCAiJHtDTUFLRV9CSU5BUllfRElSfS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9wb3N0QnVpbGQuY21kIikKLWZpbGUoV1JJVEUgIiR7SmF2YVNjcmlw
dENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAvZiBcIiR7REVSSVZFRF9T
T1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvKi5oXCIgXCIke0ZPUldBUkRJTkdfSEVBREVSU19E
SVJ9L0phdmFTY3JpcHRDb3JlXCIgPm51bCAyPm51bFxuIikKLWZpbGUoQVBQRU5EICIke0phdmFT
Y3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJAeGNvcHkgL3kgL2QgL2YgXCIke0RFUklW
RURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci8qLmhcIiBcIiR7Rk9SV0FS
RElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmVcIiA+bnVsIDI+bnVsXG4iKQorZmlsZShX
UklURSAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAicGVybCAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vU2NyaXB0cy9tYWtlLWZvcndhcmRpbmctaGVhZGVycy5wbCBcIiR7REVS
SVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvKi5oXCIgXCIke0RFUklWRURfU09VUkNF
U19ESVJ9L0phdmFTY3JpcHRDb3JlXCIgXCIke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFT
Y3JpcHRDb3JlXCJcbiIpCitmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxE
X0NPTU1BTkR9IiAiaWYgJWVycm9ybGV2ZWwlIE5FUSAwIGV4aXQgL2IgMVxuIikKK2ZpbGUoQVBQ
RU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJwZXJsICR7SkFWQVND
UklQVENPUkVfRElSfS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsIFwiJHtERVJJ
VkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvKi5oXCIgXCIke0RFUklW
RURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL2luc3BlY3RvclwiIFwiJHtGT1JXQVJESU5H
X0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZVwiXG4iKQorZmlsZShBUFBFTkQgIiR7SmF2YVNj
cmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgImlmICVlcnJvcmxldmVsJSBORVEgMCBleGl0
IC9iIDFcbiIpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9PVVRQVVRfTkFNRSBKYXZhU2NyaXB0Q29y
ZSR7REVCVUdfU1VGRklYfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvbWFrZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmM5MmY2ZmRhODNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvbWFrZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKQEAgLTAsMCAr
MSwyNSBAQAordXNlIHN0cmljdDsKKwordXNlIEZpbGU6OkJhc2VuYW1lOworCitteSAkc2VhcmNo
UGF0aCA9IHNoaWZ0OworbXkgJGluY2x1ZGVQYXRoID0gc2hpZnQ7CitteSAkZm9yd2FyZGluZ0Rp
ciA9IHNoaWZ0OworCitteSBAaGVhZGVycyA9IGdsb2IoJHNlYXJjaFBhdGgpOworZm9yZWFjaChA
aGVhZGVycykgeworICAgIG15ICRmaWxlID0gYmFzZW5hbWUoJF8pOworICAgIG15ICRmb3J3YXJk
aW5nSGVhZGVyID0gJGZvcndhcmRpbmdEaXIuJy8nLiRmaWxlOworICAgIG15ICRmaWxlQ29udGVu
dCA9ICIjaW5jbHVkZSBcIiRpbmNsdWRlUGF0aC8kZmlsZVwiXG4iOworICAgIGlmICgtZSAkZm9y
d2FyZGluZ0hlYWRlcikgeworICAgICAgICBvcGVuIChIRUFERVIsICRmb3J3YXJkaW5nSGVhZGVy
KSBvciBkaWUoIlVuYWJsZSB0byBvcGVuICRmb3J3YXJkaW5nSGVhZGVyIik7CisgICAgICAgIG15
ICRleGlzdGluZ0NvbnRlbnQgPSA8SEVBREVSPjsKKyAgICAgICAgJGZpbGVDb250ZW50IGVxICRl
eGlzdGluZ0NvbnRlbnQgb3IgZGllKCIkZm9yd2FyZGluZ0hlYWRlciBhbHJlYWR5IGV4aXN0cyBh
bmQgaGFzIGNvbnRlbnQ6XG4gICRleGlzdGluZ0NvbnRlbnRcbmV4cGVjdGVkOlxuICAkZmlsZUNv
bnRlbnRcbiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgb3BlbihIRUFERVIsICc+Jywg
JGZvcndhcmRpbmdIZWFkZXIpOworICAgICAgICBwcmludCAiQ3JlYXRpbmcgZm9yd2FyZGluZyBo
ZWFkZXIgJGZvcndhcmRpbmdIZWFkZXIgd2l0aCAjaW5jbHVkZSBcIiRpbmNsdWRlUGF0aC8kZmls
ZVwiXG4iOworICAgICAgICBwcmludCBIRUFERVIgJGZpbGVDb250ZW50OworICAgIH0KKyAgICBj
bG9zZShIRUFERVIpOworfQotLSAKMi4xNC4xLndpbmRvd3MuMQoK
</data>
<flag name="review"
          id="346404"
          type_id="1"
          status="-"
          setter="annulen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327163</attachid>
            <date>2017-11-17 05:46:36 -0800</date>
            <delta_ts>2017-11-17 06:06:59 -0800</delta_ts>
            <desc>Proposed fix</desc>
            <filename>0001-Win-forwarding-headers-should-not-be-copies.patch</filename>
            <type>text/plain</type>
            <size>5803</size>
            <attacher name="Mark Salisbury">mark.salisbury</attacher>
            
              <data encoding="base64">RnJvbSAxNDE0N2UxY2RhMDZiMzRkZDhlNzgwZTZiYjNmZGIxYTEyOGNmMTFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFNhbGlzYnVyeSA8bWFyay5zYWxpc2J1cnlAaHAuY29t
PgpEYXRlOiBGcmksIDE3IE5vdiAyMDE3IDA5OjU2OjQwICswOTAwClN1YmplY3Q6IFtQQVRDSF0g
W1dpbl0gZm9yd2FyZGluZyBoZWFkZXJzIHNob3VsZCBub3QgYmUgY29waWVzCgpGb3J3YXJkaW5n
IGhlYWRlcnMgY3JlYXRlZCBieSBKYXZhU2NyaXB0Q29yZSBhcmUgY3VycmVudGx5IGNvcGllcwpv
ZiBmaWxlcywgbm90IGZpbGVzIHdoaWNoIGhhdmUgYSAjaW5jbHVkZSBwYXRoIHRvIHRoZSByZWFs
IGhlYWRlciBmaWxlLgoKVGhlIHByb2JsZW0gd2l0aCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgaWYg
dGhlIHNhbWUgZmlsZSBlbmRzIHVwIGJlaW5nCmluY2x1ZGVkIHR3aWNlLCBidXQgYXQgZGlmZmVy
ZW50IHBhdGhzLCB0aGUgI3ByYWdtYSBvbmNlIGRvZXMgbm90aGluZwphbmQgY29tcGlsZSBlcnJv
cnMgb2NjdXIgZnJvbSBtdWx0aXBseSBkZWZpbmVkIHN5bWJvbHMuCi0tLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UgICAgICAgICAgICB8IDExICsr
KystLS0KIC4uLi9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsICAgICAgICAgICAg
IHwgMzYgKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRp
b25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsCgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggZTgxOGZmZWFiMWEuLjRlY2Y4MzUxODg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMS0xNyAgTWFyayBTYWxpc2J1cnkgIDxt
YXJrLnNhbGlzYnVyeUBocC5jb20+CisKKyAgICAgICAgW1dpbl0gZm9yd2FyZGluZyBoZWFkZXJz
IHNob3VsZCBub3QgYmUgY29waWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzk4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBLb25zdGFudGluIFRv
a2FyZXYuCisKKyAgICAgICAgRm9yd2FyZGluZyBoZWFkZXJzIGNyZWF0ZWQgYnkgSmF2YVNjcmlw
dENvcmUgYXJlIGN1cnJlbnRseSBjb3BpZXMKKyAgICAgICAgb2YgZmlsZXMsIG5vdCBmaWxlcyB3
aGljaCBoYXZlIGEgI2luY2x1ZGUgcGF0aCB0byB0aGUgcmVhbCBoZWFkZXIgZmlsZS4KKworICAg
ICAgICBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCBpZiB0aGUgc2FtZSBm
aWxlIGVuZHMgdXAgYmVpbmcKKyAgICAgICAgaW5jbHVkZWQgdHdpY2UsIGJ1dCBhdCBkaWZmZXJl
bnQgcGF0aHMsIHRoZSAjcHJhZ21hIG9uY2UgZG9lcyBub3RoaW5nCisgICAgICAgIGFuZCBjb21w
aWxlIGVycm9ycyBvY2N1ciBmcm9tIG11bHRpcGx5IGRlZmluZWQgc3ltYm9scy4KKworICAgICAg
ICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFNjcmlwdHMvbWFrZS1mb3J3YXJkaW5n
LWhlYWRlcnMucGw6IEFkZGVkLgorCiAyMDE3LTExLTE1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjQ4NjMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggYjM0OGVhZWFmYmEu
LmZkMjcyZTQ5MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBA
IC0zNCwxNSArMzQsMTYgQEAgZmlsZShDT1BZCiApCiAKIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtG
T1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZSkKLQogc2V0KEphdmFTY3JpcHRD
b3JlX1BSRV9CVUlMRF9DT01NQU5EICIke0NNQUtFX0JJTkFSWV9ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL3ByZUJ1aWxkLmNtZCIpCiBmaWxlKFJFTU9WRSAiJHtKYXZhU2NyaXB0
Q29yZV9QUkVfQlVJTERfQ09NTUFORH0iKQogZm9yZWFjaCAoX2RpcmVjdG9yeSAke0phdmFTY3Jp
cHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFU30pCi0gICAgZmlsZShBUFBFTkQg
IiR7SmF2YVNjcmlwdENvcmVfUFJFX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9kIC9mIFwi
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9LyR7X2RpcmVjdG9yeX0vKi5oXCIgXCIke0ZPUldBUkRJTkdf
SEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlXCIgPm51bCAyPm51bFxuIikKKyAgICBmaWxlKEFQ
UEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QUkVfQlVJTERfQ09NTUFORH0iICJwZXJsICR7SkFWQVND
UklQVENPUkVfRElSfS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsIC0tc2VhcmNo
LXBhdGg9XCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vJHtfZGlyZWN0b3J5fS8qLmhcIiAtLWluY2x1
ZGUtcGF0aD1cIiR7SkFWQVNDUklQVENPUkVfRElSfS8ke19kaXJlY3Rvcnl9XCIgLS1mb3J3YXJk
aW5nLWRpcj1cIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmVcIlxuIikK
KyAgICBmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QUkVfQlVJTERfQ09NTUFORH0iICJp
ZiAlZXJyb3JsZXZlbCUgTkVRIDAgZXhpdCAvYiAxXG4iKQogZW5kZm9yZWFjaCAoKQotCiBzZXQo
SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EICIke0NNQUtFX0JJTkFSWV9ESVJ9L0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Bvc3RCdWlsZC5jbWQiKQotZmlsZShXUklURSAi
JHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9kIC9mIFwi
JHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS8qLmhcIiBcIiR7Rk9SV0FSRElO
R19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmVcIiA+bnVsIDI+bnVsXG4iKQotZmlsZShBUFBF
TkQgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAv
ZiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLyouaFwi
IFwiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZVwiID5udWwgMj5udWxc
biIpCitmaWxlKFdSSVRFICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJw
ZXJsICR7SkFWQVNDUklQVENPUkVfRElSfS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJz
LnBsIC0tc2VhcmNoLXBhdGg9XCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3Jl
LyouaFwiIC0taW5jbHVkZS1wYXRoPVwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0
Q29yZVwiIC0tZm9yd2FyZGluZy1kaXI9XCIke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFT
Y3JpcHRDb3JlXCJcbiIpCitmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxE
X0NPTU1BTkR9IiAiaWYgJWVycm9ybGV2ZWwlIE5FUSAwIGV4aXQgL2IgMVxuIikKK2ZpbGUoQVBQ
RU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJwZXJsICR7SkFWQVND
UklQVENPUkVfRElSfS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsIC0tc2VhcmNo
LXBhdGg9XCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci8q
LmhcIiAtLWluY2x1ZGUtcGF0aD1cIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yXCIgLS1mb3J3YXJkaW5nLWRpcj1cIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJ
Un0vSmF2YVNjcmlwdENvcmVcIlxuIikKK2ZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3JlX1BP
U1RfQlVJTERfQ09NTUFORH0iICJpZiAlZXJyb3JsZXZlbCUgTkVRIDAgZXhpdCAvYiAxXG4iKQog
CiBzZXQoSmF2YVNjcmlwdENvcmVfT1VUUFVUX05BTUUgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NV
RkZJWH0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9tYWtlLWZv
cndhcmRpbmctaGVhZGVycy5wbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL21ha2Ut
Zm9yd2FyZGluZy1oZWFkZXJzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5hZDc4MDcxNzZlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsCkBAIC0wLDAgKzEsMzYgQEAKK3Vz
ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxl
OjpTcGVjOwordXNlIEdldG9wdDo6TG9uZzsKKworbXkgJHNlYXJjaFBhdGg7CitteSAkaW5jbHVk
ZVBhdGg7CitteSAkZm9yd2FyZGluZ0RpcjsKKworbXkgJW9wdGlvbnMgPSAoCisgICAgJ3NlYXJj
aC1wYXRoPXMnID0+IFwkc2VhcmNoUGF0aCwKKyAgICAnaW5jbHVkZS1wYXRoPXMnID0+IFwkaW5j
bHVkZVBhdGgsCisgICAgJ2ZvcndhcmRpbmctZGlyPXMnID0+IFwkZm9yd2FyZGluZ0RpciwKKyk7
CitHZXRPcHRpb25zICglb3B0aW9ucyk7CisKK215IEBoZWFkZXJzID0gZ2xvYigkc2VhcmNoUGF0
aCk7Citmb3JlYWNoIG15ICRoZWFkZXIgKEBoZWFkZXJzKSB7CisgICAgbXkgJGZpbGUgPSBiYXNl
bmFtZSgkaGVhZGVyKTsKKyAgICBteSAkZm9yd2FyZGluZ0hlYWRlciA9IEZpbGU6OlNwZWMtPmpv
aW4oJGZvcndhcmRpbmdEaXIsICRmaWxlKTsKKyAgICBteSAkZmlsZUNvbnRlbnQgPSAiI2luY2x1
ZGUgXCIkaW5jbHVkZVBhdGgvJGZpbGVcIlxuIjsKKyAgICBpZiAoLWUgJGZvcndhcmRpbmdIZWFk
ZXIpIHsKKyAgICAgICAgb3BlbiAobXkgJGZoLCAnPCcsICRmb3J3YXJkaW5nSGVhZGVyKSBvciBk
aWUoIlVuYWJsZSB0byBvcGVuICRmb3J3YXJkaW5nSGVhZGVyICgkISkiKTsKKyAgICAgICAgbXkg
JGV4aXN0aW5nQ29udGVudCA9IDwkZmg+OworICAgICAgICBjbG9zZSgkZmgpOworICAgICAgICAk
ZmlsZUNvbnRlbnQgZXEgJGV4aXN0aW5nQ29udGVudCBvciBkaWUoIiRmb3J3YXJkaW5nSGVhZGVy
IGFscmVhZHkgZXhpc3RzIGFuZCBoYXMgY29udGVudDpcbiAgJGV4aXN0aW5nQ29udGVudFxuZXhw
ZWN0ZWQ6XG4gICRmaWxlQ29udGVudFxuIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBv
cGVuKG15ICRmaCwgJz4nLCAkZm9yd2FyZGluZ0hlYWRlcik7CisgICAgICAgIHByaW50ICJDcmVh
dGluZyBmb3J3YXJkaW5nIGhlYWRlciAkZm9yd2FyZGluZ0hlYWRlciB3aXRoICNpbmNsdWRlIFwi
JGluY2x1ZGVQYXRoLyRmaWxlXCJcbiI7CisgICAgICAgIHByaW50ICRmaCAkZmlsZUNvbnRlbnQ7
CisgICAgICAgIGNsb3NlKCRmaCkgb3IgZGllKCJGYWlsZWQgdG8gY2xvc2UgJGZvcndhcmRpbmdI
ZWFkZXIgKCQhKSIpOworICAgIH0KK30KLS0gCjIuMTQuMS53aW5kb3dzLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327166</attachid>
            <date>2017-11-17 06:06:59 -0800</date>
            <delta_ts>2017-11-17 17:28:39 -0800</delta_ts>
            <desc>Proposed fix</desc>
            <filename>0001-Win-forwarding-headers-should-not-be-copies.patch</filename>
            <type>text/plain</type>
            <size>5801</size>
            <attacher name="Mark Salisbury">mark.salisbury</attacher>
            
              <data encoding="base64">RnJvbSA2NDljOWQ4MDhkNDhkMGEzZTNiN2Y0NjFiMDZjMWY3MThlNDA1Y2ZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFNhbGlzYnVyeSA8bWFyay5zYWxpc2J1cnlAaHAuY29t
PgpEYXRlOiBGcmksIDE3IE5vdiAyMDE3IDA5OjU2OjQwICswOTAwClN1YmplY3Q6IFtQQVRDSF0g
W1dpbl0gZm9yd2FyZGluZyBoZWFkZXJzIHNob3VsZCBub3QgYmUgY29waWVzCgpGb3J3YXJkaW5n
IGhlYWRlcnMgY3JlYXRlZCBieSBKYXZhU2NyaXB0Q29yZSBhcmUgY3VycmVudGx5IGNvcGllcwpv
ZiBmaWxlcywgbm90IGZpbGVzIHdoaWNoIGhhdmUgYSAjaW5jbHVkZSBwYXRoIHRvIHRoZSByZWFs
IGhlYWRlciBmaWxlLgoKVGhlIHByb2JsZW0gd2l0aCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgaWYg
dGhlIHNhbWUgZmlsZSBlbmRzIHVwIGJlaW5nCmluY2x1ZGVkIHR3aWNlLCBidXQgYXQgZGlmZmVy
ZW50IHBhdGhzLCB0aGUgI3ByYWdtYSBvbmNlIGRvZXMgbm90aGluZwphbmQgY29tcGlsZSBlcnJv
cnMgb2NjdXIgZnJvbSBtdWx0aXBseSBkZWZpbmVkIHN5bWJvbHMuCi0tLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UgICAgICAgICAgICB8IDExICsr
KystLS0KIC4uLi9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsICAgICAgICAgICAg
IHwgMzYgKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRp
b25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsCgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggZTgxOGZmZWFiMWEuLjRlY2Y4MzUxODg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMS0xNyAgTWFyayBTYWxpc2J1cnkgIDxt
YXJrLnNhbGlzYnVyeUBocC5jb20+CisKKyAgICAgICAgW1dpbl0gZm9yd2FyZGluZyBoZWFkZXJz
IHNob3VsZCBub3QgYmUgY29waWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzk4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBLb25zdGFudGluIFRv
a2FyZXYuCisKKyAgICAgICAgRm9yd2FyZGluZyBoZWFkZXJzIGNyZWF0ZWQgYnkgSmF2YVNjcmlw
dENvcmUgYXJlIGN1cnJlbnRseSBjb3BpZXMKKyAgICAgICAgb2YgZmlsZXMsIG5vdCBmaWxlcyB3
aGljaCBoYXZlIGEgI2luY2x1ZGUgcGF0aCB0byB0aGUgcmVhbCBoZWFkZXIgZmlsZS4KKworICAg
ICAgICBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCBpZiB0aGUgc2FtZSBm
aWxlIGVuZHMgdXAgYmVpbmcKKyAgICAgICAgaW5jbHVkZWQgdHdpY2UsIGJ1dCBhdCBkaWZmZXJl
bnQgcGF0aHMsIHRoZSAjcHJhZ21hIG9uY2UgZG9lcyBub3RoaW5nCisgICAgICAgIGFuZCBjb21w
aWxlIGVycm9ycyBvY2N1ciBmcm9tIG11bHRpcGx5IGRlZmluZWQgc3ltYm9scy4KKworICAgICAg
ICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFNjcmlwdHMvbWFrZS1mb3J3YXJkaW5n
LWhlYWRlcnMucGw6IEFkZGVkLgorCiAyMDE3LTExLTE1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjQ4NjMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggYjM0OGVhZWFmYmEu
LmZkMjcyZTQ5MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBA
IC0zNCwxNSArMzQsMTYgQEAgZmlsZShDT1BZCiApCiAKIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtG
T1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZSkKLQogc2V0KEphdmFTY3JpcHRD
b3JlX1BSRV9CVUlMRF9DT01NQU5EICIke0NNQUtFX0JJTkFSWV9ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL3ByZUJ1aWxkLmNtZCIpCiBmaWxlKFJFTU9WRSAiJHtKYXZhU2NyaXB0
Q29yZV9QUkVfQlVJTERfQ09NTUFORH0iKQogZm9yZWFjaCAoX2RpcmVjdG9yeSAke0phdmFTY3Jp
cHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFU30pCi0gICAgZmlsZShBUFBFTkQg
IiR7SmF2YVNjcmlwdENvcmVfUFJFX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9kIC9mIFwi
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9LyR7X2RpcmVjdG9yeX0vKi5oXCIgXCIke0ZPUldBUkRJTkdf
SEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlXCIgPm51bCAyPm51bFxuIikKKyAgICBmaWxlKEFQ
UEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QUkVfQlVJTERfQ09NTUFORH0iICJwZXJsICR7SkFWQVND
UklQVENPUkVfRElSfS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsIC0tc2VhcmNo
LXBhdGg9XCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vJHtfZGlyZWN0b3J5fS8qLmhcIiAtLWluY2x1
ZGUtcGF0aD1cIiR7SkFWQVNDUklQVENPUkVfRElSfS8ke19kaXJlY3Rvcnl9XCIgLS1mb3J3YXJk
aW5nLWRpcj1cIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmVcIlxuIikK
KyAgICBmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QUkVfQlVJTERfQ09NTUFORH0iICJp
ZiAlZXJyb3JsZXZlbCUgTkVRIDAgZXhpdCAvYiAxXG4iKQogZW5kZm9yZWFjaCAoKQotCiBzZXQo
SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EICIke0NNQUtFX0JJTkFSWV9ESVJ9L0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Bvc3RCdWlsZC5jbWQiKQotZmlsZShXUklURSAi
JHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9kIC9mIFwi
JHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS8qLmhcIiBcIiR7Rk9SV0FSRElO
R19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmVcIiA+bnVsIDI+bnVsXG4iKQotZmlsZShBUFBF
TkQgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAv
ZiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLyouaFwi
IFwiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZVwiID5udWwgMj5udWxc
biIpCitmaWxlKFdSSVRFICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJw
ZXJsICR7SkFWQVNDUklQVENPUkVfRElSfS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJz
LnBsIC0tc2VhcmNoLXBhdGg9XCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3Jl
LyouaFwiIC0taW5jbHVkZS1wYXRoPVwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0
Q29yZVwiIC0tZm9yd2FyZGluZy1kaXI9XCIke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFT
Y3JpcHRDb3JlXCJcbiIpCitmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxE
X0NPTU1BTkR9IiAiaWYgJWVycm9ybGV2ZWwlIE5FUSAwIGV4aXQgL2IgMVxuIikKK2ZpbGUoQVBQ
RU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJwZXJsICR7SkFWQVND
UklQVENPUkVfRElSfS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsIC0tc2VhcmNo
LXBhdGg9XCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci8q
LmhcIiAtLWluY2x1ZGUtcGF0aD1cIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yXCIgLS1mb3J3YXJkaW5nLWRpcj1cIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJ
Un0vSmF2YVNjcmlwdENvcmVcIlxuIikKK2ZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3JlX1BP
U1RfQlVJTERfQ09NTUFORH0iICJpZiAlZXJyb3JsZXZlbCUgTkVRIDAgZXhpdCAvYiAxXG4iKQog
CiBzZXQoSmF2YVNjcmlwdENvcmVfT1VUUFVUX05BTUUgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NV
RkZJWH0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9tYWtlLWZv
cndhcmRpbmctaGVhZGVycy5wbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL21ha2Ut
Zm9yd2FyZGluZy1oZWFkZXJzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi45NTFmZmI5YjhkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL21ha2UtZm9yd2FyZGluZy1oZWFkZXJzLnBsCkBAIC0wLDAgKzEsMzYgQEAKK3Vz
ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxl
OjpTcGVjOwordXNlIEdldG9wdDo6TG9uZzsKKworbXkgJHNlYXJjaFBhdGg7CitteSAkaW5jbHVk
ZVBhdGg7CitteSAkZm9yd2FyZGluZ0RpcjsKKworbXkgJW9wdGlvbnMgPSAoCisgICAgJ3NlYXJj
aC1wYXRoPXMnID0+IFwkc2VhcmNoUGF0aCwKKyAgICAnaW5jbHVkZS1wYXRoPXMnID0+IFwkaW5j
bHVkZVBhdGgsCisgICAgJ2ZvcndhcmRpbmctZGlyPXMnID0+IFwkZm9yd2FyZGluZ0RpciwKKyk7
CitHZXRPcHRpb25zICglb3B0aW9ucyk7CisKK215IEBoZWFkZXJzID0gZ2xvYigkc2VhcmNoUGF0
aCk7Citmb3JlYWNoIG15ICRoZWFkZXIgKEBoZWFkZXJzKSB7CisgICAgbXkgJGZpbGUgPSBiYXNl
bmFtZSgkaGVhZGVyKTsKKyAgICBteSAkZm9yd2FyZGluZ0hlYWRlciA9IEZpbGU6OlNwZWMtPmpv
aW4oJGZvcndhcmRpbmdEaXIsICRmaWxlKTsKKyAgICBteSAkZmlsZUNvbnRlbnQgPSAiI2luY2x1
ZGUgXCIkaW5jbHVkZVBhdGgvJGZpbGVcIiI7CisgICAgaWYgKC1lICRmb3J3YXJkaW5nSGVhZGVy
KSB7CisgICAgICAgIG9wZW4gKG15ICRmaCwgJzwnLCAkZm9yd2FyZGluZ0hlYWRlcikgb3IgZGll
KCJVbmFibGUgdG8gb3BlbiAkZm9yd2FyZGluZ0hlYWRlciAoJCEpIik7CisgICAgICAgIG15ICRl
eGlzdGluZ0NvbnRlbnQgPSA8JGZoPjsKKyAgICAgICAgY2xvc2UoJGZoKTsKKyAgICAgICAgJGZp
bGVDb250ZW50IGVxICRleGlzdGluZ0NvbnRlbnQgb3IgZGllKCIkZm9yd2FyZGluZ0hlYWRlciBh
bHJlYWR5IGV4aXN0cyBhbmQgaGFzIGNvbnRlbnQ6XG4gICRleGlzdGluZ0NvbnRlbnRcbmV4cGVj
dGVkOlxuICAkZmlsZUNvbnRlbnRcbiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgb3Bl
bihteSAkZmgsICc+JywgJGZvcndhcmRpbmdIZWFkZXIpOworICAgICAgICBwcmludCAiQ3JlYXRp
bmcgZm9yd2FyZGluZyBoZWFkZXIgJGZvcndhcmRpbmdIZWFkZXIgd2l0aCAjaW5jbHVkZSBcIiRp
bmNsdWRlUGF0aC8kZmlsZVwiXG4iOworICAgICAgICBwcmludCAkZmggJGZpbGVDb250ZW50Owor
ICAgICAgICBjbG9zZSgkZmgpIG9yIGRpZSgiRmFpbGVkIHRvIGNsb3NlICRmb3J3YXJkaW5nSGVh
ZGVyICgkISkiKTsKKyAgICB9Cit9Ci0tIAoyLjE0LjEud2luZG93cy4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>