Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
pytools
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Andreas Klöckner
pytools
Commits
fac534af
Commit
fac534af
authored
11 years ago
by
Andreas Klöckner
Browse files
Options
Downloads
Patches
Plain Diff
Get rid of ez_setup
parent
b0cce656
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
MANIFEST.in
+0
-1
0 additions, 1 deletion
MANIFEST.in
ez_setup.py
+0
-258
0 additions, 258 deletions
ez_setup.py
setup.py
+0
-3
0 additions, 3 deletions
setup.py
with
0 additions
and
262 deletions
MANIFEST.in
+
0
−
1
View file @
fac534af
include ez_setup.py
This diff is collapsed.
Click to expand it.
ez_setup.py
deleted
100644 → 0
+
0
−
258
View file @
b0cce656
#!python
"""
Bootstrap setuptools installation
If you want to use setuptools in your package
'
s setup.py, just include this
file in the same directory with it, and add this to the top of your setup.py::
from ez_setup import use_setuptools
use_setuptools()
If you want to require a specific version of setuptools, set a download
mirror, or use an alternate download directory, you can do so by supplying
the appropriate options to ``use_setuptools()``.
This file can also be run as a script to install or upgrade setuptools.
"""
import
os
import
shutil
import
sys
import
tempfile
import
tarfile
import
optparse
import
subprocess
from
distutils
import
log
try
:
from
site
import
USER_SITE
except
ImportError
:
USER_SITE
=
None
DEFAULT_VERSION
=
"
0.7.2
"
DEFAULT_URL
=
"
https://pypi.python.org/packages/source/s/setuptools/
"
def
_python_cmd
(
*
args
):
args
=
(
sys
.
executable
,)
+
args
return
subprocess
.
call
(
args
)
==
0
def
_install
(
tarball
,
install_args
=
()):
# extracting the tarball
tmpdir
=
tempfile
.
mkdtemp
()
log
.
warn
(
'
Extracting in %s
'
,
tmpdir
)
old_wd
=
os
.
getcwd
()
try
:
os
.
chdir
(
tmpdir
)
tar
=
tarfile
.
open
(
tarball
)
_extractall
(
tar
)
tar
.
close
()
# going in the directory
subdir
=
os
.
path
.
join
(
tmpdir
,
os
.
listdir
(
tmpdir
)[
0
])
os
.
chdir
(
subdir
)
log
.
warn
(
'
Now working in %s
'
,
subdir
)
# installing
log
.
warn
(
'
Installing Setuptools
'
)
if
not
_python_cmd
(
'
setup.py
'
,
'
install
'
,
*
install_args
):
log
.
warn
(
'
Something went wrong during the installation.
'
)
log
.
warn
(
'
See the error message above.
'
)
# exitcode will be 2
return
2
finally
:
os
.
chdir
(
old_wd
)
shutil
.
rmtree
(
tmpdir
)
def
_build_egg
(
egg
,
tarball
,
to_dir
):
# extracting the tarball
tmpdir
=
tempfile
.
mkdtemp
()
log
.
warn
(
'
Extracting in %s
'
,
tmpdir
)
old_wd
=
os
.
getcwd
()
try
:
os
.
chdir
(
tmpdir
)
tar
=
tarfile
.
open
(
tarball
)
_extractall
(
tar
)
tar
.
close
()
# going in the directory
subdir
=
os
.
path
.
join
(
tmpdir
,
os
.
listdir
(
tmpdir
)[
0
])
os
.
chdir
(
subdir
)
log
.
warn
(
'
Now working in %s
'
,
subdir
)
# building an egg
log
.
warn
(
'
Building a Setuptools egg in %s
'
,
to_dir
)
_python_cmd
(
'
setup.py
'
,
'
-q
'
,
'
bdist_egg
'
,
'
--dist-dir
'
,
to_dir
)
finally
:
os
.
chdir
(
old_wd
)
shutil
.
rmtree
(
tmpdir
)
# returning the result
log
.
warn
(
egg
)
if
not
os
.
path
.
exists
(
egg
):
raise
IOError
(
'
Could not build the egg.
'
)
def
_do_download
(
version
,
download_base
,
to_dir
,
download_delay
):
egg
=
os
.
path
.
join
(
to_dir
,
'
setuptools-%s-py%d.%d.egg
'
%
(
version
,
sys
.
version_info
[
0
],
sys
.
version_info
[
1
]))
if
not
os
.
path
.
exists
(
egg
):
tarball
=
download_setuptools
(
version
,
download_base
,
to_dir
,
download_delay
)
_build_egg
(
egg
,
tarball
,
to_dir
)
sys
.
path
.
insert
(
0
,
egg
)
import
setuptools
setuptools
.
bootstrap_install_from
=
egg
def
use_setuptools
(
version
=
DEFAULT_VERSION
,
download_base
=
DEFAULT_URL
,
to_dir
=
os
.
curdir
,
download_delay
=
15
):
# making sure we use the absolute path
to_dir
=
os
.
path
.
abspath
(
to_dir
)
was_imported
=
'
pkg_resources
'
in
sys
.
modules
or
\
'
setuptools
'
in
sys
.
modules
try
:
import
pkg_resources
except
ImportError
:
return
_do_download
(
version
,
download_base
,
to_dir
,
download_delay
)
try
:
pkg_resources
.
require
(
"
setuptools>=
"
+
version
)
return
except
pkg_resources
.
VersionConflict
:
e
=
sys
.
exc_info
()[
1
]
if
was_imported
:
sys
.
stderr
.
write
(
"
The required version of setuptools (>=%s) is not available,
\n
"
"
and can
'
t be installed while this script is running. Please
\n
"
"
install a more recent version first, using
\n
"
"'
easy_install -U setuptools
'
.
"
"
\n\n
(Currently using %r)
\n
"
%
(
version
,
e
.
args
[
0
]))
sys
.
exit
(
2
)
else
:
del
pkg_resources
,
sys
.
modules
[
'
pkg_resources
'
]
# reload ok
return
_do_download
(
version
,
download_base
,
to_dir
,
download_delay
)
except
pkg_resources
.
DistributionNotFound
:
return
_do_download
(
version
,
download_base
,
to_dir
,
download_delay
)
def
download_setuptools
(
version
=
DEFAULT_VERSION
,
download_base
=
DEFAULT_URL
,
to_dir
=
os
.
curdir
,
delay
=
15
):
"""
Download setuptools from a specified location and return its filename
`version` should be a valid setuptools version number that is available
as an egg for download under the `download_base` URL (which should end
with a
'
/
'
). `to_dir` is the directory where the egg will be downloaded.
`delay` is the number of seconds to pause before an actual download
attempt.
"""
# making sure we use the absolute path
to_dir
=
os
.
path
.
abspath
(
to_dir
)
try
:
from
urllib.request
import
urlopen
except
ImportError
:
from
urllib2
import
urlopen
tgz_name
=
"
setuptools-%s.tar.gz
"
%
version
url
=
download_base
+
tgz_name
saveto
=
os
.
path
.
join
(
to_dir
,
tgz_name
)
src
=
dst
=
None
if
not
os
.
path
.
exists
(
saveto
):
# Avoid repeated downloads
try
:
log
.
warn
(
"
Downloading %s
"
,
url
)
src
=
urlopen
(
url
)
# Read/write all in one block, so we don't create a corrupt file
# if the download is interrupted.
data
=
src
.
read
()
dst
=
open
(
saveto
,
"
wb
"
)
dst
.
write
(
data
)
finally
:
if
src
:
src
.
close
()
if
dst
:
dst
.
close
()
return
os
.
path
.
realpath
(
saveto
)
def
_extractall
(
self
,
path
=
"
.
"
,
members
=
None
):
"""
Extract all members from the archive to the current working
directory and set owner, modification time and permissions on
directories afterwards. `path
'
specifies a different directory
to extract to. `members
'
is optional and must be a subset of the
list returned by getmembers().
"""
import
copy
import
operator
from
tarfile
import
ExtractError
directories
=
[]
if
members
is
None
:
members
=
self
for
tarinfo
in
members
:
if
tarinfo
.
isdir
():
# Extract directories with a safe mode.
directories
.
append
(
tarinfo
)
tarinfo
=
copy
.
copy
(
tarinfo
)
tarinfo
.
mode
=
448
# decimal for oct 0700
self
.
extract
(
tarinfo
,
path
)
# Reverse sort directories.
if
sys
.
version_info
<
(
2
,
4
):
def
sorter
(
dir1
,
dir2
):
return
cmp
(
dir1
.
name
,
dir2
.
name
)
directories
.
sort
(
sorter
)
directories
.
reverse
()
else
:
directories
.
sort
(
key
=
operator
.
attrgetter
(
'
name
'
),
reverse
=
True
)
# Set correct owner, mtime and filemode on directories.
for
tarinfo
in
directories
:
dirpath
=
os
.
path
.
join
(
path
,
tarinfo
.
name
)
try
:
self
.
chown
(
tarinfo
,
dirpath
)
self
.
utime
(
tarinfo
,
dirpath
)
self
.
chmod
(
tarinfo
,
dirpath
)
except
ExtractError
:
e
=
sys
.
exc_info
()[
1
]
if
self
.
errorlevel
>
1
:
raise
else
:
self
.
_dbg
(
1
,
"
tarfile: %s
"
%
e
)
def
_build_install_args
(
options
):
"""
Build the arguments to
'
python setup.py install
'
on the setuptools package
"""
install_args
=
[]
if
options
.
user_install
:
if
sys
.
version_info
<
(
2
,
6
):
log
.
warn
(
"
--user requires Python 2.6 or later
"
)
raise
SystemExit
(
1
)
install_args
.
append
(
'
--user
'
)
return
install_args
def
_parse_args
():
"""
Parse the command line for options
"""
parser
=
optparse
.
OptionParser
()
parser
.
add_option
(
'
--user
'
,
dest
=
'
user_install
'
,
action
=
'
store_true
'
,
default
=
False
,
help
=
'
install in user site package (requires Python 2.6 or later)
'
)
parser
.
add_option
(
'
--download-base
'
,
dest
=
'
download_base
'
,
metavar
=
"
URL
"
,
default
=
DEFAULT_URL
,
help
=
'
alternative URL from where to download the setuptools package
'
)
options
,
args
=
parser
.
parse_args
()
# positional arguments are ignored
return
options
def
main
(
version
=
DEFAULT_VERSION
):
"""
Install or upgrade setuptools and EasyInstall
"""
options
=
_parse_args
()
tarball
=
download_setuptools
(
download_base
=
options
.
download_base
)
return
_install
(
tarball
,
_build_install_args
(
options
))
if
__name__
==
'
__main__
'
:
sys
.
exit
(
main
())
This diff is collapsed.
Click to expand it.
setup.py
+
0
−
3
View file @
fac534af
#!/usr/bin/env python
# -*- coding: latin1 -*-
import
ez_setup
ez_setup
.
use_setuptools
()
from
setuptools
import
setup
try
:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment