Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
news
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sartika Aritonang
news
Commits
8aebc9d0
Commit
8aebc9d0
authored
May 29, 2020
by
Sartika Aritonang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
8396011b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
142 additions
and
0 deletions
+142
-0
legacy.py
.../site-packages/pip/_internal/operations/install/legacy.py
+142
-0
No files found.
stbi/Lib/site-packages/pip/_internal/operations/install/legacy.py
0 → 100644
View file @
8aebc9d0
"""Legacy installation process, i.e. `setup.py install`.
"""
import
logging
import
os
import
sys
from
distutils.util
import
change_root
from
pip._internal.utils.deprecation
import
deprecated
from
pip._internal.utils.logging
import
indent_log
from
pip._internal.utils.misc
import
ensure_dir
from
pip._internal.utils.setuptools_build
import
make_setuptools_install_args
from
pip._internal.utils.subprocess
import
runner_with_spinner_message
from
pip._internal.utils.temp_dir
import
TempDirectory
from
pip._internal.utils.typing
import
MYPY_CHECK_RUNNING
if
MYPY_CHECK_RUNNING
:
from
typing
import
List
,
Optional
,
Sequence
from
pip._internal.build_env
import
BuildEnvironment
from
pip._internal.models.scheme
import
Scheme
logger
=
logging
.
getLogger
(
__name__
)
class
LegacyInstallFailure
(
Exception
):
def
__init__
(
self
):
# type: () -> None
self
.
parent
=
sys
.
exc_info
()
def
install
(
install_options
,
# type: List[str]
global_options
,
# type: Sequence[str]
root
,
# type: Optional[str]
home
,
# type: Optional[str]
prefix
,
# type: Optional[str]
use_user_site
,
# type: bool
pycompile
,
# type: bool
scheme
,
# type: Scheme
setup_py_path
,
# type: str
isolated
,
# type: bool
req_name
,
# type: str
build_env
,
# type: BuildEnvironment
unpacked_source_directory
,
# type: str
req_description
,
# type: str
):
# type: (...) -> bool
header_dir
=
scheme
.
headers
with
TempDirectory
(
kind
=
"record"
)
as
temp_dir
:
try
:
record_filename
=
os
.
path
.
join
(
temp_dir
.
path
,
'install-record.txt'
)
install_args
=
make_setuptools_install_args
(
setup_py_path
,
global_options
=
global_options
,
install_options
=
install_options
,
record_filename
=
record_filename
,
root
=
root
,
prefix
=
prefix
,
header_dir
=
header_dir
,
home
=
home
,
use_user_site
=
use_user_site
,
no_user_config
=
isolated
,
pycompile
=
pycompile
,
)
runner
=
runner_with_spinner_message
(
"Running setup.py install for {}"
.
format
(
req_name
)
)
with
indent_log
(),
build_env
:
runner
(
cmd
=
install_args
,
cwd
=
unpacked_source_directory
,
)
if
not
os
.
path
.
exists
(
record_filename
):
logger
.
debug
(
'Record file
%
s not found'
,
record_filename
)
# Signal to the caller that we didn't install the new package
return
False
except
Exception
:
# Signal to the caller that we didn't install the new package
raise
LegacyInstallFailure
# At this point, we have successfully installed the requirement.
# We intentionally do not use any encoding to read the file because
# setuptools writes the file using distutils.file_util.write_file,
# which does not specify an encoding.
with
open
(
record_filename
)
as
f
:
record_lines
=
f
.
read
()
.
splitlines
()
def
prepend_root
(
path
):
# type: (str) -> str
if
root
is
None
or
not
os
.
path
.
isabs
(
path
):
return
path
else
:
return
change_root
(
root
,
path
)
for
line
in
record_lines
:
directory
=
os
.
path
.
dirname
(
line
)
if
directory
.
endswith
(
'.egg-info'
):
egg_info_dir
=
prepend_root
(
directory
)
break
else
:
deprecated
(
reason
=
(
"{} did not indicate that it installed an "
".egg-info directory. Only setup.py projects "
"generating .egg-info directories are supported."
)
.
format
(
req_description
),
replacement
=
(
"for maintainers: updating the setup.py of {0}. "
"For users: contact the maintainers of {0} to let "
"them know to update their setup.py."
.
format
(
req_name
)
),
gone_in
=
"20.2"
,
issue
=
6998
,
)
# FIXME: put the record somewhere
return
True
new_lines
=
[]
for
line
in
record_lines
:
filename
=
line
.
strip
()
if
os
.
path
.
isdir
(
filename
):
filename
+=
os
.
path
.
sep
new_lines
.
append
(
os
.
path
.
relpath
(
prepend_root
(
filename
),
egg_info_dir
)
)
new_lines
.
sort
()
ensure_dir
(
egg_info_dir
)
inst_files_path
=
os
.
path
.
join
(
egg_info_dir
,
'installed-files.txt'
)
with
open
(
inst_files_path
,
'w'
)
as
f
:
f
.
write
(
'
\n
'
.
join
(
new_lines
)
+
'
\n
'
)
return
True
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment