mirror of
https://github.com/pypiserver/pypiserver
synced 2025-02-22 19:19:37 +01:00
merge "universal wheel" changes
This commit is contained in:
commit
0207348df9
@ -1,15 +0,0 @@
|
||||
#! /usr/bin/env python
|
||||
|
||||
|
||||
def main():
|
||||
import sys, os
|
||||
if hasattr(sys, "pypy_version_info"):
|
||||
v = "pypy"
|
||||
else:
|
||||
v = "py%s%s" % (sys.version_info[:2])
|
||||
|
||||
os.execvp("tox", ["tox", "-e", v])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
21
.travis.yml
21
.travis.yml
@ -1,17 +1,18 @@
|
||||
language: python
|
||||
python: 2.7
|
||||
env:
|
||||
- TOX_ENV=py26
|
||||
- TOX_ENV=py27
|
||||
- TOX_ENV=py32
|
||||
- TOX_ENV=py33
|
||||
- TOX_ENV=pypy
|
||||
|
||||
python:
|
||||
- 2.6
|
||||
- 2.7
|
||||
- 3.2
|
||||
- pypy
|
||||
install:
|
||||
- pip install tox
|
||||
|
||||
before_install: pip install --use-mirrors tox
|
||||
|
||||
install: python setup.py install
|
||||
script: ./.travis-runtox.py
|
||||
script:
|
||||
- tox -e $TOX_ENV
|
||||
|
||||
branches:
|
||||
except:
|
||||
- standalone
|
||||
|
||||
|
@ -12,10 +12,6 @@ include pypiserver/_app.py
|
||||
include pypiserver/bottle.py
|
||||
include pypiserver/core.py
|
||||
include pypiserver/manage.py
|
||||
include scripts/opensuse/pypiserver
|
||||
include scripts/opensuse/pypiserver.init
|
||||
include scripts/ubuntu/pypiserver
|
||||
include scripts/ubuntu/pypiserver.init
|
||||
include setup.cfg
|
||||
include setup.py
|
||||
include tests/test_app.py
|
||||
|
@ -33,6 +33,13 @@ Run the following commands to get your PyPI server up and running::
|
||||
pypi-server -p 8080 ~/packages
|
||||
pip install -i http://localhost:8080/simple/ ...
|
||||
|
||||
.. NOTE::
|
||||
|
||||
The above commands do work on an unix like operating system with a
|
||||
posix shell. If you're using windows, you'll have to run their
|
||||
'windows counterparts'. The same is true for the rest of this
|
||||
documentation.
|
||||
|
||||
Alternative Installation as standalone script
|
||||
=============================================
|
||||
The git repository contains a 'pypi-server-standalone.py' script,
|
||||
|
@ -11,7 +11,7 @@ import os
|
||||
def main():
|
||||
files = sorted(set([x.strip() for x in os.popen("git ls-files")]) -
|
||||
set(("make-manifest", "commit-standalone",
|
||||
"vendor", ".gitmodules", ".travis.yml", ".travis-runtox.py")))
|
||||
"vendor", ".gitmodules", ".travis.yml")))
|
||||
with open("MANIFEST.in", "w") as f:
|
||||
for x in files:
|
||||
f.write("include %s\n" % x)
|
||||
|
@ -204,6 +204,10 @@ The following additional options can be specified with -U:
|
||||
-u
|
||||
allow updating to unstable version (alpha, beta, rc, dev versions)
|
||||
|
||||
--index-url INDEX_URL
|
||||
use a different pip index url while updating. The default is to use
|
||||
https://pypi.python.org/simple.
|
||||
|
||||
Visit http://pypi.python.org/pypi/pypiserver for more information.
|
||||
""")
|
||||
|
||||
@ -220,6 +224,7 @@ def main(argv=None):
|
||||
server = DEFAULT_SERVER
|
||||
redirect_to_fallback = True
|
||||
fallback_url = "http://pypi.python.org/simple"
|
||||
index_url = "http://pypi.python.org/simple"
|
||||
password_file = None
|
||||
overwrite = False
|
||||
|
||||
@ -230,6 +235,7 @@ def main(argv=None):
|
||||
try:
|
||||
opts, roots = getopt.getopt(argv[1:], "i:p:r:d:P:Uuxoh", [
|
||||
"interface=",
|
||||
"index-url=",
|
||||
"passwords=",
|
||||
"port=",
|
||||
"root=",
|
||||
@ -249,6 +255,8 @@ def main(argv=None):
|
||||
port = int(v)
|
||||
elif k in ("-i", "--interface"):
|
||||
host = v
|
||||
elif k == "--index-url":
|
||||
index_url = v
|
||||
elif k in ("-r", "--root"):
|
||||
roots.append(v)
|
||||
elif k == "--disable-fallback":
|
||||
@ -288,7 +296,7 @@ def main(argv=None):
|
||||
if command == "update":
|
||||
packages = frozenset(itertools.chain(*[listdir(r) for r in roots]))
|
||||
from pypiserver import manage
|
||||
manage.update(packages, update_directory, update_dry_run, stable_only=update_stable_only)
|
||||
manage.update(packages, update_directory, update_dry_run, stable_only=update_stable_only, index_url=index_url)
|
||||
return
|
||||
|
||||
a = app(
|
||||
|
@ -85,7 +85,7 @@ def build_releases(pkg, versions):
|
||||
replaces=pkg)
|
||||
|
||||
|
||||
def find_updates(pkgset, stable_only=True):
|
||||
def find_updates(pkgset, stable_only=True, index_url="https://pypi.python.org/pypi/"):
|
||||
no_releases = set()
|
||||
filter_releases = filter_stable_releases if stable_only else (lambda x: x)
|
||||
|
||||
@ -98,7 +98,7 @@ def find_updates(pkgset, stable_only=True):
|
||||
sys.stdout.write("checking %s packages for newer version\n" % len(latest_pkgs),)
|
||||
need_update = set()
|
||||
|
||||
pypi = make_pypi_client("https://pypi.python.org/pypi/")
|
||||
pypi = make_pypi_client(index_url)
|
||||
|
||||
for count, pkg in enumerate(latest_pkgs):
|
||||
if count % 40 == 0:
|
||||
@ -127,12 +127,12 @@ def find_updates(pkgset, stable_only=True):
|
||||
return need_update
|
||||
|
||||
|
||||
def update(pkgset, destdir=None, dry_run=False, stable_only=True):
|
||||
need_update = find_updates(pkgset, stable_only=stable_only)
|
||||
def update(pkgset, destdir=None, dry_run=False, stable_only=True, index_url="https://pypi.python.org/simple"):
|
||||
need_update = find_updates(pkgset, stable_only=stable_only, index_url=index_url)
|
||||
for pkg in sorted(need_update, key=lambda x: x.pkgname):
|
||||
sys.stdout.write("# update %s from %s to %s\n" % (pkg.pkgname, pkg.replaces.version, pkg.version))
|
||||
|
||||
cmd = ["pip", "-q", "install", "--no-deps", "-i", "https://pypi.python.org/simple",
|
||||
cmd = ["pip", "-q", "install", "--no-deps", "-i", index_url,
|
||||
"-d", destdir or os.path.dirname(pkg.replaces.fn),
|
||||
"%s==%s" % (pkg.pkgname, pkg.version)]
|
||||
|
||||
|
@ -1,5 +0,0 @@
|
||||
PYPISERVER_VIRTUALENV="."
|
||||
PYPISERVER_PORT="3443"
|
||||
PYPISERVER_HOST="0.0.0.0"
|
||||
PYPISERVER_PACKAGES="/data/pypiserver/repository"
|
||||
PYPISERVER_OPTS="--disable-fallback"
|
@ -1,146 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Author: Low Kian Seong
|
||||
#
|
||||
# /etc/init.d/pypiserver
|
||||
#
|
||||
# and symbolic its link
|
||||
#
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: pypiserver
|
||||
# Required-Start:
|
||||
# Required-Stop:
|
||||
# Should-Start:
|
||||
# Should-Stop:
|
||||
|
||||
# Default-Start: 3 5
|
||||
# Default-Stop: 0 1 2 6
|
||||
# Short-Description: Daemonized version of deluge.
|
||||
# Description: Starts the pypiserver daemon.
|
||||
### END INIT INFO
|
||||
|
||||
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||||
DESC="pypiserver"
|
||||
NAME=pypiserver
|
||||
VERBOSE=""
|
||||
|
||||
# Read configuration variable file if it is present
|
||||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
||||
|
||||
# Define LSB log_* functions.
|
||||
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
DAEMON=${PYPISERVER_VIRTUALENV}/bin/pypi-server
|
||||
DAEMON_ARGS="-i ${PYPISERVER_HOST} -p ${PYPISERVER_PORT} ${PYPISERVER_OPTS} ${PYPISERVER_PACKAGES}"
|
||||
PIDFILE=/var/run/$NAME.pid
|
||||
SCRIPTNAME=/etc/init.d/$NAME
|
||||
|
||||
# Exit if the package is not installed
|
||||
[ -x "$DAEMON" ] || exit 0
|
||||
|
||||
#
|
||||
# Function that starts the daemon/service
|
||||
#
|
||||
do_start()
|
||||
{
|
||||
# Return
|
||||
# 0 if daemon has been started
|
||||
# 1 if daemon was already running
|
||||
# 2 if daemon could not be started
|
||||
if [ -f "$PIDFILE" ]; then
|
||||
log_daemon_msg "Found existing PID file. NOT starting" "$NAME"
|
||||
else
|
||||
startproc -p $PIDFILE \
|
||||
$DAEMON $DAEMON_ARGS > /dev/null || return 2
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Function that stops the daemon/service
|
||||
#
|
||||
do_stop()
|
||||
{
|
||||
# Return
|
||||
# 0 if daemon has been stopped
|
||||
# 1 if daemon was already stopped
|
||||
# 2 if daemon could not be stopped
|
||||
# other if a failure occurred
|
||||
killproc -TERM $DAEMON
|
||||
}
|
||||
|
||||
#
|
||||
# Function that sends a SIGHUP to the daemon/service
|
||||
#
|
||||
do_reload() {
|
||||
#
|
||||
# If the daemon can reload its configuration without
|
||||
# restarting (for example, when it is sent a SIGHUP),
|
||||
# then implement that here.
|
||||
#
|
||||
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
rc_status -v
|
||||
do_start
|
||||
case "$?" in
|
||||
0|1) rc_status -v;;
|
||||
2) rc_status -v;;
|
||||
esac
|
||||
;;
|
||||
stop)
|
||||
rc_status -v
|
||||
do_stop
|
||||
case "$?" in
|
||||
0|1) rc_status -v;;
|
||||
2)rc_status -v;;
|
||||
esac
|
||||
;;
|
||||
status)
|
||||
check_proc "$DAEMON"
|
||||
rc_status -v
|
||||
;;
|
||||
#reload|force-reload)
|
||||
#
|
||||
# If do_reload() is not implemented then leave this commented out
|
||||
# and leave 'force-reload' as an alias for 'restart'.
|
||||
#
|
||||
#log_daemon_msg "Reloading $DESC" "$NAME"
|
||||
#do_reload
|
||||
#log_end_msg $?
|
||||
#;;
|
||||
restart|force-reload)
|
||||
#
|
||||
# If the "reload" option is implemented then remove the
|
||||
# 'force-reload' alias
|
||||
#
|
||||
rc_status -v
|
||||
do_stop
|
||||
case "$?" in
|
||||
0|1)
|
||||
do_start
|
||||
case "$?" in
|
||||
0) rc_status -v ;;
|
||||
1) rc_status -v ;; # Old process is still running
|
||||
*) rc_status -v ;; # Failed to start
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
# Failed to stop
|
||||
rc_status -v
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
|
||||
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
|
||||
:
|
@ -1,5 +0,0 @@
|
||||
PYPISERVER_VIRTUALENV="."
|
||||
PYPISERVER_PORT="3443"
|
||||
PYPISERVER_HOST="0.0.0.0"
|
||||
PYPISERVER_PACKAGES="/data/pypiserver/repository"
|
||||
PYPISERVER_OPTS="--disable-fallback"
|
@ -1,140 +0,0 @@
|
||||
#!/bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# Provides: pypiserver
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: pypiserver initscript
|
||||
# Description: This file should be used to construct scripts to be
|
||||
# placed in /etc/init.d.
|
||||
### END INIT INFO
|
||||
|
||||
# Author: System Administrator <sysadmin@lcalink.com>
|
||||
|
||||
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||||
DESC="pypiserver"
|
||||
NAME=pypiserver
|
||||
VERBOSE=""
|
||||
|
||||
# Read configuration variable file if it is present
|
||||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
||||
|
||||
# Load the VERBOSE setting and other rcS variables
|
||||
. /lib/init/vars.sh
|
||||
|
||||
# Define LSB log_* functions.
|
||||
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
DAEMON=${PYPISERVER_VIRTUALENV}/bin/pypi-server
|
||||
DAEMON_ARGS="-i ${PYPISERVER_HOST} -p ${PYPISERVER_PORT} ${PYPISERVER_OPTS} ${PYPISERVER_PACKAGES}"
|
||||
PIDFILE=/var/run/$NAME.pid
|
||||
SCRIPTNAME=/etc/init.d/$NAME
|
||||
|
||||
# Exit if the package is not installed
|
||||
[ -x "$DAEMON" ] || exit 0
|
||||
|
||||
#
|
||||
# Function that starts the daemon/service
|
||||
#
|
||||
do_start()
|
||||
{
|
||||
# Return
|
||||
# 0 if daemon has been started
|
||||
# 1 if daemon was already running
|
||||
# 2 if daemon could not be started
|
||||
if [ -f "$PIDFILE" ]; then
|
||||
log_daemon_msg "Found existing PID file. NOT starting" "$NAME"
|
||||
else
|
||||
start-stop-daemon --start --background --make-pid --pidfile $PIDFILE \
|
||||
--exec $DAEMON -- $DAEMON_ARGS || return 2
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Function that stops the daemon/service
|
||||
#
|
||||
do_stop()
|
||||
{
|
||||
# Return
|
||||
# 0 if daemon has been stopped
|
||||
# 1 if daemon was already stopped
|
||||
# 2 if daemon could not be stopped
|
||||
# other if a failure occurred
|
||||
start-stop-daemon --stop --retry=TERM/30/KILL/5 --pidfile $PIDFILE && rm -f $PIDFILE
|
||||
}
|
||||
|
||||
#
|
||||
# Function that sends a SIGHUP to the daemon/service
|
||||
#
|
||||
do_reload() {
|
||||
#
|
||||
# If the daemon can reload its configuration without
|
||||
# restarting (for example, when it is sent a SIGHUP),
|
||||
# then implement that here.
|
||||
#
|
||||
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
log_daemon_msg "Starting $DESC" "$NAME"
|
||||
do_start
|
||||
case "$?" in
|
||||
0|1) log_end_msg 0 ;;
|
||||
2) log_end_msg 1 ;;
|
||||
esac
|
||||
;;
|
||||
stop)
|
||||
log_daemon_msg "Stopping $DESC" "$NAME"
|
||||
do_stop
|
||||
case "$?" in
|
||||
0|1) log_end_msg 0 ;;
|
||||
2) log_end_msg 1 ;;
|
||||
esac
|
||||
;;
|
||||
status)
|
||||
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
|
||||
;;
|
||||
#reload|force-reload)
|
||||
#
|
||||
# If do_reload() is not implemented then leave this commented out
|
||||
# and leave 'force-reload' as an alias for 'restart'.
|
||||
#
|
||||
#log_daemon_msg "Reloading $DESC" "$NAME"
|
||||
#do_reload
|
||||
#log_end_msg $?
|
||||
#;;
|
||||
restart|force-reload)
|
||||
#
|
||||
# If the "reload" option is implemented then remove the
|
||||
# 'force-reload' alias
|
||||
#
|
||||
log_daemon_msg "Restarting $DESC" "$NAME"
|
||||
do_stop
|
||||
case "$?" in
|
||||
0|1)
|
||||
do_start
|
||||
case "$?" in
|
||||
0) log_end_msg 0 ;;
|
||||
1) log_end_msg 1 ;; # Old process is still running
|
||||
*) log_end_msg 1 ;; # Failed to start
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
# Failed to stop
|
||||
log_end_msg 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
|
||||
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
|
||||
:
|
Loading…
Reference in New Issue
Block a user