<?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>203213</bug_id>
          
          <creation_ts>2019-10-21 14:52:12 -0700</creation_ts>
          <short_desc>Python 3: 2to3 script may not be in a user&apos;s path</short_desc>
          <delta_ts>2019-10-23 09:58:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202462</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1582059</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-10-21 14:52:12 -0700</bug_when>
    <thetext>In &lt;https://trac.webkit.org/changeset/251112/webkit&gt;, I assumed users would have 2to3 on their path. This was a bad assumption (I have a machine which doesn&apos;t, as an example). It&apos;s also unnecessary because 2to3 is part of the Python 3 standard library, we can leverage that and call it directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582065</commentid>
    <comment_count>1</comment_count>
      <attachid>381464</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-10-21 15:03:34 -0700</bug_when>
    <thetext>Created attachment 381464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582698</commentid>
    <comment_count>2</comment_count>
      <attachid>381464</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-22 18:29:28 -0700</bug_when>
    <thetext>Comment on attachment 381464
Patch

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

&gt; Tools/Scripts/webkitpy/thirdparty/__init__.py:-221
&gt; -            self._executive.run_command([&apos;2to3&apos;, &apos;-w&apos;, self._fs.join(_AUTOINSTALLED_DIR, &apos;bs4&apos;)])

It may be cleaner if we invoke  self._executive.run_command([os.path.join(os.path.dirname(lib2to3), &quot;__main__.py&quot;), &apos;-w&apos;, self._fs.join(_AUTOINSTALLED_DIR, &apos;bs4&apos;)])
This way, we don&apos;t have to temporarily change sys.stdout and use mulitiprocessing module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582806</commentid>
    <comment_count>3</comment_count>
      <attachid>381464</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-10-23 07:59:57 -0700</bug_when>
    <thetext>Comment on attachment 381464
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/thirdparty/__init__.py:-221
&gt;&gt; -            self._executive.run_command([&apos;2to3&apos;, &apos;-w&apos;, self._fs.join(_AUTOINSTALLED_DIR, &apos;bs4&apos;)])
&gt; 
&gt; It may be cleaner if we invoke  self._executive.run_command([os.path.join(os.path.dirname(lib2to3), &quot;__main__.py&quot;), &apos;-w&apos;, self._fs.join(_AUTOINSTALLED_DIR, &apos;bs4&apos;)])
&gt; This way, we don&apos;t have to temporarily change sys.stdout and use mulitiprocessing module.

Then we&apos;d have to figure out where 2to3 is installed.

I disliked this executive method in the first place, multiprocessing is a bit dirtier in this function, but I feel like it&apos;s cleaner for the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582821</commentid>
    <comment_count>4</comment_count>
      <attachid>381464</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-23 08:43:03 -0700</bug_when>
    <thetext>Comment on attachment 381464
Patch

Clearing flags on attachment: 381464

Committed r251478: &lt;https://trac.webkit.org/changeset/251478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582822</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-23 08:43:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582825</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-23 08:44:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/56540189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582853</commentid>
    <comment_count>7</comment_count>
      <attachid>381464</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-23 09:58:09 -0700</bug_when>
    <thetext>Comment on attachment 381464
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/thirdparty/__init__.py:-221
&gt;&gt;&gt; -            self._executive.run_command([&apos;2to3&apos;, &apos;-w&apos;, self._fs.join(_AUTOINSTALLED_DIR, &apos;bs4&apos;)])
&gt;&gt; 
&gt;&gt; It may be cleaner if we invoke  self._executive.run_command([os.path.join(os.path.dirname(lib2to3), &quot;__main__.py&quot;), &apos;-w&apos;, self._fs.join(_AUTOINSTALLED_DIR, &apos;bs4&apos;)])
&gt;&gt; This way, we don&apos;t have to temporarily change sys.stdout and use mulitiprocessing module.
&gt; 
&gt; Then we&apos;d have to figure out where 2to3 is installed.
&gt; 
&gt; I disliked this executive method in the first place, multiprocessing is a bit dirtier in this function, but I feel like it&apos;s cleaner for the caller.

We don&apos;t directly call the `2to3`, we still rely on `lib2to3` module as your initial change. Instead of calling binary &apos;2to3&apos; we invoke &apos;__main__.py&apos; file under root of lib2to3 module.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381464</attachid>
            <date>2019-10-21 15:03:34 -0700</date>
            <delta_ts>2019-10-23 08:43:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2761</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MTM4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTEwLTIxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogMnRvMyBzY3JpcHQgbWF5IG5vdCBiZSBpbiBhIHVzZXIn
cyBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDMyMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weToKKyAgICAgICAgKEF1dG9p
bnN0YWxsSW1wb3J0SG9vay5fX2luaXRfXyk6IFJlbW92ZSBleGVjdXRpdmUgZGVwZW5kZW5jaWVz
LgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0YWxsX2JlYXV0aWZ1bHNvdXAp
OiBVc2UgbXVsdGlwcm9jZXNzIGJlY2F1c2UgMnRvMyBzZXRzCisgICAgICAgIFNvbWUgdW5kZXNp
cmFibGUgZ2xvYmFsIGxvZ2dpbmcgc3RhdGUuCisKIDIwMTktMTAtMjEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTZXJ2aWNlV29ya2VyIHRl
c3RzIHNob3VsZCB1c2UgVENQU2VydmVyIGluc3RlYWQgb2YgV0tVUkxTY2hlbWVIYW5kbGVyCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CShy
ZXZpc2lvbiAyNTEzODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19p
bml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgZnJvbSBjb2xsZWN0aW9u
cyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHNwYXduCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uYXV0b2luc3RhbGwgaW1wb3J0IEF1dG9JbnN0YWxsZXIKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIAog
X1RISVJEUEFSVFlfRElSID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogX0FVVE9JTlNUQUxM
RURfRElSID0gb3MucGF0aC5qb2luKF9USElSRFBBUlRZX0RJUiwgImF1dG9pbnN0YWxsZWQiKQpA
QCAtNzgsOSArNzcsOCBAQCBpZiBub3QgZnMuZXhpc3RzKHJlYWRtZV9wYXRoKToKIAogCiBjbGFz
cyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZXN5c3RlbT1Ob25lLCBleGVjdXRpdmU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZpbGVzeXN0ZW09Tm9uZSk6CiAgICAgICAgIHNlbGYuX2ZzID0gZmlsZXN5c3RlbSBvciBGaWxl
U3lzdGVtKCkKLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1dGl2
ZSgpCiAKICAgICBkZWYgX2Vuc3VyZV9hdXRvaW5zdGFsbGVkX2Rpcl9pc19pbl9zeXNfcGF0aChz
ZWxmKToKICAgICAgICAgIyBTb21lIHBhY2thZ2VzIHJlcXVpcmUgdGhhdCB0aGUgYXJlIGJlaW5n
IHB1dCBzb21ld2hlcmUgdW5kZXIgYSBkaXJlY3RvcnkgaW4gc3lzLnBhdGguCkBAIC0yMTgsNyAr
MjE2LDE2IEBAIGNsYXNzIEF1dG9pbnN0YWxsSW1wb3J0SG9vayhvYmplY3QpOgogICAgICAgICBk
aWRfZG93bmxvYWRfYnM0ID0gc2VsZi5faW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0
ZWQub3JnL3BhY2thZ2VzLzg2L2NkLzQ5NWM2OGYwNTM2ZGNkMjVmMDE2ZTAwNjczMWJhN2JlNzJl
MDcyMjgwMzA1ZWM1MjU5MDAxMmMxZTZmMi9iZWF1dGlmdWxzb3VwNC00LjguMS50YXIuZ3oiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVhdXRpZnVsc291cDQt
NC44LjEvYnM0IikKICAgICAgICAgaWYgZGlkX2Rvd25sb2FkX2JzNDoKLSAgICAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJzJ0bzMnLCAnLXcnLCBzZWxmLl9mcy5qb2luKF9B
VVRPSU5TVEFMTEVEX0RJUiwgJ2JzNCcpXSkKKyAgICAgICAgICAgIGZyb20gbXVsdGlwcm9jZXNz
aW5nIGltcG9ydCBQcm9jZXNzCisgICAgICAgICAgICBmcm9tIGxpYjJ0bzMubWFpbiBpbXBvcnQg
bWFpbgorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IG9w
ZW4ob3MuZGV2bnVsbCwgJ3cnKQorICAgICAgICAgICAgICAgIHByb2Nlc3MgPSBQcm9jZXNzKHRh
cmdldD1tYWluLCBhcmdzPSgnbGliMnRvMy5maXhlcycsIFsnLXcnLCBzZWxmLl9mcy5qb2luKF9B
VVRPSU5TVEFMTEVEX0RJUiwgJ2JzNCcpXSkpCisgICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGFy
dCgpCisgICAgICAgICAgICAgICAgcHJvY2Vzcy5qb2luKCkKKyAgICAgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN5cy5fX3N0ZG91dF9fCiAKIAogICAgIGRl
ZiBfaW5zdGFsbF9weWxpbnQoc2VsZik6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>