#22 Remove sys.executable check from change-user-install-location patch
Merged 6 years ago by cstratak. Opened 6 years ago by mcyprian.
rpms/ mcyprian/python3 sudo-pip-patch  into  master

@@ -1,19 +1,20 @@ 

  diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py

- index 9d31d13..ed44a93 100644

+ index 0258d3d..4ebf50a 100644

  --- a/Lib/distutils/command/install.py

  +++ b/Lib/distutils/command/install.py

- @@ -424,8 +424,18 @@ class install(Command):

+ @@ -418,8 +418,19 @@ class install(Command):

                       raise DistutilsOptionError(

                             "must not supply exec-prefix without prefix")

  

  -                self.prefix = os.path.normpath(sys.prefix)

  -                self.exec_prefix = os.path.normpath(sys.exec_prefix)

  +                # self.prefix is set to sys.prefix + /local/

- +                # if the executable is /usr/bin/python* and RPM build

- +                # is not detected to make pip and distutils install into

- +                # the separate location.

- +                if (sys.executable.startswith("/usr/bin/python")

- +                    and 'RPM_BUILD_ROOT' not in os.environ):

+ +                # if neither RPM build nor virtual environment is

+ +                # detected to make pip and distutils install packages

+ +                # into the separate location.

+ +                if (not (hasattr(sys, 'real_prefix') or

+ +                    sys.prefix != sys.base_prefix) and

+ +                    'RPM_BUILD_ROOT' not in os.environ):

  +                    addition = "/local"

  +                else:

  +                    addition = ""
@@ -24,22 +25,21 @@ 

               else:

                   if self.exec_prefix is None:

  diff --git a/Lib/site.py b/Lib/site.py

- index 4744eb0..b5fe571 100644

+ index 0fc9200..c95202e 100644

  --- a/Lib/site.py

  +++ b/Lib/site.py

- @@ -326,7 +326,15 @@ def getsitepackages(prefixes=None):

+ @@ -322,7 +322,14 @@ def getsitepackages(prefixes=None):

       return sitepackages

  

   def addsitepackages(known_paths, prefixes=None):

  -    """Add site-packages to sys.path"""

- +    """Add site-packages to sys.path.

+ +    """Add site-packages to sys.path

  +

- +    '/usr/local' is included in PREFIXES if the executable is /usr/bin/python*

- +    and RPM build is not detected to make sudo pip installed packages visible.

+ +    '/usr/local' is included in PREFIXES if RPM build is not detected

+ +    to make packages installed into this location visible.

  +

  +    """

- +    if (ENABLE_USER_SITE and sys.executable.startswith("/usr/bin/python")

- +        and 'RPM_BUILD_ROOT' not in os.environ):

+ +    if ENABLE_USER_SITE and 'RPM_BUILD_ROOT' not in os.environ:

  +        PREFIXES.insert(0, "/usr/local")

       for sitedir in getsitepackages(prefixes):

           if os.path.isdir(sitedir):

file modified
+5 -1
@@ -14,7 +14,7 @@ 

  #  WARNING  When rebasing to a new Python version,

  #           remember to update the python3-docs package as well

  Version: %{pybasever}.4

- Release: 11%{?dist}

+ Release: 12%{?dist}

  License: Python

  

  
@@ -1502,6 +1502,10 @@ 

  # ======================================================

  

  %changelog

+ * Fri Feb 02 2018 Michal Cyprian <mcyprian@redhat.com> - 3.6.4-12

+ - Remove sys.executable check from change-user-install-location patch

+ Resolves: rhbz#1532287

+ 

  * Thu Feb 01 2018 Charalampos Stratakis <cstratak@redhat.com> - 3.6.4-11

  - Define TLS cipher suite on build time.

  

Detect virtual environment instead of checking sys.executable value to determine if the default install location for distutils and pip should be changed to sys.prefix + "local".
Resolves rhbz#1532287.

Michal, have you tested this with both venv and virtualenv?

Good point, venv tests are missing in my test suite [0]. I will add some and update the patch. Do you have in your mind some other issues that might possibly occur here?

[0] https://github.com/mcyprian/mtf-sudo-pip-change/blob/master/test_behavior.py

not sure, I just remember that sys.real_prefix is only used in one of those two.

rebased onto 08ffd08

6 years ago

Pull-Request has been merged by cstratak

6 years ago

@mcyprian please apply this to python37 as well.