summary refs log tree commit diff
path: root/pkgs/development/python-modules/bootstrapped-pip/prefix.patch
blob: e3e96659942b83fef53e7af6be21f4d8ebf76456 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
diff --git a/pip/commands/install.py b/pip/commands/install.py
index ddaa470..b798433 100644
--- a/pip/commands/install.py
+++ b/pip/commands/install.py
@@ -147,6 +147,13 @@ class InstallCommand(Command):
                  "directory.")
 
         cmd_opts.add_option(
+            '--prefix',
+            dest='prefix_path',
+            metavar='dir',
+            default=None,
+            help="Installation prefix where lib, bin and other top-level folders are placed")
+
+        cmd_opts.add_option(
             "--compile",
             action="store_true",
             dest="compile",
@@ -350,6 +357,7 @@ class InstallCommand(Command):
                             install_options,
                             global_options,
                             root=options.root_path,
+                            prefix=options.prefix_path,
                         )
                         reqs = sorted(
                             requirement_set.successfully_installed,
diff --git a/pip/locations.py b/pip/locations.py
index dfbc6da..b2f3383 100644
--- a/pip/locations.py
+++ b/pip/locations.py
@@ -209,7 +209,7 @@ site_config_files = [
 
 
 def distutils_scheme(dist_name, user=False, home=None, root=None,
-                     isolated=False):
+                     isolated=False, prefix=None):
     """
     Return a distutils install scheme
     """
@@ -231,6 +231,10 @@ def distutils_scheme(dist_name, user=False, home=None, root=None,
     # or user base for installations during finalize_options()
     # ideally, we'd prefer a scheme class that has no side-effects.
     i.user = user or i.user
+    if user:
+        i.prefix = ""
+    else:
+        i.prefix = prefix or i.prefix
     i.home = home or i.home
     i.root = root or i.root
     i.finalize_options()
diff --git a/pip/req/req_install.py b/pip/req/req_install.py
index 38013c5..14b868b 100644
--- a/pip/req/req_install.py
+++ b/pip/req/req_install.py
@@ -806,7 +806,7 @@ exec(compile(
         else:
             return True
 
-    def install(self, install_options, global_options=(), root=None):
+    def install(self, install_options, global_options=[], root=None, prefix=None):
         if self.editable:
             self.install_editable(install_options, global_options)
             return
@@ -814,7 +814,7 @@ exec(compile(
             version = pip.wheel.wheel_version(self.source_dir)
             pip.wheel.check_compatibility(version, self.name)
 
-            self.move_wheel_files(self.source_dir, root=root)
+            self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
             self.install_succeeded = True
             return
 
@@ -839,6 +839,8 @@ exec(compile(
 
             if root is not None:
                 install_args += ['--root', root]
+            if prefix is not None:
+                install_args += ['--prefix', prefix]
 
             if self.pycompile:
                 install_args += ["--compile"]
@@ -1008,12 +1010,13 @@ exec(compile(
     def is_wheel(self):
         return self.link and self.link.is_wheel
 
-    def move_wheel_files(self, wheeldir, root=None):
+    def move_wheel_files(self, wheeldir, root=None, prefix=None):
         move_wheel_files(
             self.name, self.req, wheeldir,
             user=self.use_user_site,
             home=self.target_dir,
             root=root,
+            prefix=prefix,
             pycompile=self.pycompile,
             isolated=self.isolated,
         )
diff --git a/pip/wheel.py b/pip/wheel.py
index 57246ca..738a6b0 100644
--- a/pip/wheel.py
+++ b/pip/wheel.py
@@ -130,12 +130,12 @@ def get_entrypoints(filename):
 
 
 def move_wheel_files(name, req, wheeldir, user=False, home=None, root=None,
-                     pycompile=True, scheme=None, isolated=False):
+                     pycompile=True, scheme=None, isolated=False, prefix=None):
     """Install a wheel"""
 
     if not scheme:
         scheme = distutils_scheme(
-            name, user=user, home=home, root=root, isolated=isolated
+            name, user=user, home=home, root=root, isolated=isolated, prefix=prefix,
         )
 
     if root_is_purelib(name, wheeldir):