9 Commits

Author SHA1 Message Date
2d81d0a0be euscan: change download url
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2012-01-18 08:13:41 +01:00
333c535230 euscan: fix man page installation
ref: https://bugs.gentoo.org/show_bug.cgi?id=398873

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2012-01-16 14:15:50 +01:00
72e43ac4fe euscan: tweak error paths
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2012-01-02 21:31:05 +01:00
2bd012ef82 euscanwww: show maintainer name and email
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2011-12-30 11:34:54 +01:00
b78e73038d euscan: add kde handler and fix some regex issues
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2011-12-30 11:34:39 +01:00
d673c00e12 euscan: update TODO list
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2011-12-30 11:33:27 +01:00
fef31c514c euscan: respect --quiet in pypi handler
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2011-12-12 15:15:00 +01:00
0e6c18b84b euscanwww: clean settings
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2011-12-11 14:32:55 +01:00
3569f1bb97 euscan: better --quiet mode
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
2011-12-11 14:32:38 +01:00
15 changed files with 189 additions and 108 deletions

View File

@ -2,6 +2,14 @@
Change history Change history
================ ================
.. _version-0.2.0:
0.2.0
=====
:release-date: ???
* Better --quiet mode
.. _version-0.1.0: .. _version-0.1.0:
0.1.0 0.1.0

13
TODO
View File

@ -18,12 +18,12 @@ Site Handlers
euscanwww euscanwww
--------- ---------
- add last scan in the footer - add last scan in the footer [0.2.0]
- rss scan world + post ? - rss scan world + post ?
- add an /about/config page that describe the current config (overlays, stuff in make.conf, euscan default settings, etc..) - add an /about/config page that describe the current config (overlays, stuff in make.conf, euscan default settings, etc..) [0.2.0]
- add a table for overlays, change euscan_versions - add a table for overlays, change euscan_versions [0.2.0]
### Commands ### Commands [0.2.0]
- euscan_init: init local tree (portage, layman, eix) - euscan_init: init local tree (portage, layman, eix)
- euscan_addoverlay: add a layman overlay - euscan_addoverlay: add a layman overlay
@ -33,9 +33,12 @@ euscanwww
### Scan process ### Scan process
- Move to celery: - Move to celery: [0.2.0]
- periodic task for emerge --sync; layman -S; eix-update etc... (every day ?) - periodic task for emerge --sync; layman -S; eix-update etc... (every day ?)
- periodic task for euscan (once every week, groupped by category or package ?) - periodic task for euscan (once every week, groupped by category or package ?)
This would allow easier on-demand refresh from web interface This would allow easier on-demand refresh from web interface
### API
- Move to tastypie: [0.3.0]

View File

@ -29,7 +29,8 @@ from gentoolkit import pprinter as pp
from gentoolkit.eclean.search import (port_settings) from gentoolkit.eclean.search import (port_settings)
from gentoolkit.errors import GentoolkitException from gentoolkit.errors import GentoolkitException
from euscan import CONFIG, output import euscan
from euscan import CONFIG
from euscan.scan import scan_upstream from euscan.scan import scan_upstream
""" Globals """ """ Globals """
@ -198,7 +199,7 @@ def main():
sys.exit(errno.EINVAL) sys.exit(errno.EINVAL)
""" Change euscan's output """ """ Change euscan's output """
output = EOutput(CONFIG['quiet']) euscan.output = EOutput(CONFIG['quiet'])
if CONFIG['verbose'] > 2: if CONFIG['verbose'] > 2:
httplib.HTTPConnection.debuglevel = 1 httplib.HTTPConnection.debuglevel = 1
@ -219,18 +220,23 @@ def main():
file=sys.stderr, end="") file=sys.stderr, end="")
pp.die(1, "one of the above fully-qualified ebuild names instead.") pp.die(1, "one of the above fully-qualified ebuild names instead.")
except GentoolkitException as err: except GentoolkitException as err:
pp.die(1, str(err)) pp.die(1, '%s: %s' % (package, str(err)))
except Exception as err: except Exception as err:
pp.die(1, str(err)) pp.die(1, '%s: %s' % (package, str(err)))
if not CONFIG['quiet']:
print () print ()
for url, version in ret: for cp, url, version in ret:
if not CONFIG['quiet']:
print ("Upstream Version: " print ("Upstream Version: "
+ pp.number("%s" % version) + pp.number("%s" % version)
+ pp.path(" %s" % url)) + pp.path(" %s" % url))
else:
print (pp.cpv("%s-%s" % (cp, version))
+ ": " + pp.path(url))
if not len(ret): if not len(ret) and not CONFIG['quiet']:
print (pp.warn("Didn't find any new version, " print (pp.warn("Didn't find any new version, "
+ "check package's homepage for " + "check package's homepage for "
+ "more informations")); + "more informations"));

View File

@ -60,7 +60,7 @@ def herd(request, herd):
@render_to('euscan/maintainers.html') @render_to('euscan/maintainers.html')
def maintainers(request): def maintainers(request):
maintainers = Package.objects.filter(maintainers__isnull=False) maintainers = Package.objects.filter(maintainers__isnull=False)
maintainers = maintainers.values('maintainers__id', 'maintainers__name') maintainers = maintainers.values('maintainers__id', 'maintainers__name', 'maintainers__email')
maintainers = maintainers.annotate(n_packaged=Sum('n_packaged'), maintainers = maintainers.annotate(n_packaged=Sum('n_packaged'),
n_overlay=Sum('n_overlay'), n_overlay=Sum('n_overlay'),
n_versions=Sum('n_versions')) n_versions=Sum('n_versions'))

View File

@ -36,21 +36,23 @@ MANAGERS = ADMINS
}, },
""" """
EUSCAN_ROOT = os.path.dirname(os.path.abspath(__file__))
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(os.path.dirname( __file__ ), 'euscan.db') 'NAME': os.path.join(EUSCAN_ROOT, 'euscan.db')
}, },
} }
CACHES = { CACHES = {
'default': { 'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': os.path.join(os.path.dirname( __file__ ), 'euscan.cache'), 'LOCATION': os.path.join(EUSCAN_ROOT, 'euscan.cache'),
} }
} }
RRD_ROOT = os.path.join(os.path.dirname( __file__ ), 'rrd') RRD_ROOT = os.path.join(EUSCAN_ROOT, 'rrd')
# Local time zone for this installation. Choices can be found here: # Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
@ -77,7 +79,7 @@ USE_L10N = True
# Absolute filesystem path to the directory that will hold user-uploaded files. # Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/" # Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = os.path.join(os.path.dirname( __file__ ), 'media/') MEDIA_ROOT = os.path.join(EUSCAN_ROOT, 'media/')
# URL that handles the media served from MEDIA_ROOT. Make sure to use a # URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases). # trailing slash if there is a path component (optional in other cases).
@ -117,7 +119,7 @@ ROOT_URLCONF = 'euscanwww.urls'
FORCE_SCRIPT_NAME="" FORCE_SCRIPT_NAME=""
TEMPLATE_DIRS = ( TEMPLATE_DIRS = (
os.path.join(os.path.dirname( __file__ ), 'templates'), os.path.join(EUSCAN_ROOT, 'templates'),
) )
INSTALLED_APPS = ( INSTALLED_APPS = (

View File

@ -20,7 +20,11 @@
<tr> <tr>
<td> <td>
<a href="{% url euscan.views.maintainer maintainer.maintainers__id %}"> <a href="{% url euscan.views.maintainer maintainer.maintainers__id %}">
{% if maintainer.maintainers__name != maintainer.maintainers__email %}
{{ maintainer.maintainers__name }} &lt;{{ maintainer.maintainers__email }}&gt;
{% else %}
{{ maintainer.maintainers__name }} {{ maintainer.maintainers__name }}
{% endif %}
</a> </a>
{% package_bar maintainer %} {% package_bar maintainer %}
</td> </td>

View File

@ -1,9 +1,6 @@
from euscan.handlers import generic from euscan.handlers import generic, php, pypi, rubygem, kde
from euscan.handlers import php
from euscan.handlers import pypi
from euscan.handlers import rubygem
handlers = [ php, pypi, rubygem, generic ] handlers = [ kde, php, pypi, rubygem, generic ]
def find_best_handler(cpv, url): def find_best_handler(cpv, url):
for handler in handlers: for handler in handlers:

View File

@ -6,8 +6,9 @@ from BeautifulSoup import BeautifulSoup
import portage import portage
from euscan import CONFIG, SCANDIR_BLACKLIST_URLS, BRUTEFORCE_BLACKLIST_PACKAGES, BRUTEFORCE_BLACKLIST_URLS, output from euscan import CONFIG, SCANDIR_BLACKLIST_URLS, BRUTEFORCE_BLACKLIST_PACKAGES, BRUTEFORCE_BLACKLIST_URLS
from euscan import helpers from euscan import helpers
import euscan
def scan_html(data, url, pattern): def scan_html(data, url, pattern):
soup = BeautifulSoup(data) soup = BeautifulSoup(data)
@ -17,6 +18,7 @@ def scan_html(data, url, pattern):
href = link.get("href") href = link.get("href")
if not href: if not href:
continue continue
if href.startswith(url): if href.startswith(url):
href = href.replace(url, "", 1) href = href.replace(url, "", 1)
@ -48,7 +50,7 @@ def scan_directory_recursive(cpv, url, steps):
steps = steps[1:] steps = steps[1:]
output.einfo("Scanning: %s" % url) euscan.output.einfo("Scanning: %s" % url)
try: try:
fp = helpers.urlopen(url) fp = helpers.urlopen(url)
@ -91,20 +93,22 @@ def scan_directory_recursive(cpv, url, steps):
def scan(cpv, url): def scan(cpv, url):
for bu in SCANDIR_BLACKLIST_URLS: for bu in SCANDIR_BLACKLIST_URLS:
if re.match(bu, url): if re.match(bu, url):
output.einfo("%s is blacklisted by rule %s" % (url, bu)) euscan.output.einfo("%s is blacklisted by rule %s" % (url, bu))
return [] return []
resolved_url = helpers.parse_mirror(url) resolved_url = helpers.parse_mirror(url)
if not resolved_url:
return []
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(cpv)
template = helpers.template_from_url(resolved_url, ver) template = helpers.template_from_url(resolved_url, ver)
if '${' not in template: if '${' not in template:
output.einfo("Url doesn't seems to depend on version: %s not found in %s" euscan.output.einfo("Url doesn't seems to depend on version: %s not found in %s"
% (ver, resolved_url)) % (ver, resolved_url))
return [] return []
else: else:
output.einfo("Scanning: %s" % template) euscan.output.einfo("Scanning: %s" % template)
steps = helpers.generate_scan_paths(template) steps = helpers.generate_scan_paths(template)
return scan_directory_recursive(cpv, "", steps) return scan_directory_recursive(cpv, "", steps)
@ -113,18 +117,20 @@ def brute_force(cpv, url):
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(cpv)
url = helpers.parse_mirror(url) url = helpers.parse_mirror(url)
if not url:
return []
for bp in BRUTEFORCE_BLACKLIST_PACKAGES: for bp in BRUTEFORCE_BLACKLIST_PACKAGES:
if re.match(bp, cp): if re.match(bp, cp):
output.einfo("%s is blacklisted by rule %s" % (cp, bp)) euscan.output.einfo("%s is blacklisted by rule %s" % (cp, bp))
return [] return []
for bp in BRUTEFORCE_BLACKLIST_URLS: for bp in BRUTEFORCE_BLACKLIST_URLS:
if re.match(bp, url): if re.match(bp, url):
output.einfo("%s is blacklisted by rule %s" % (cp, bp)) euscan.output.einfo("%s is blacklisted by rule %s" % (cp, bp))
return [] return []
output.einfo("Generating version from " + ver) euscan.output.einfo("Generating version from " + ver)
components = helpers.split_version(ver) components = helpers.split_version(ver)
versions = helpers.gen_versions(components, CONFIG["brute-force"]) versions = helpers.gen_versions(components, CONFIG["brute-force"])
@ -135,17 +141,17 @@ def brute_force(cpv, url):
versions.remove(v) versions.remove(v)
if not versions: if not versions:
output.einfo("Can't generate new versions from " + ver) euscan.output.einfo("Can't generate new versions from " + ver)
return [] return []
template = helpers.template_from_url(url, ver) template = helpers.template_from_url(url, ver)
if '${PV}' not in template: if '${PV}' not in template:
output.einfo("Url doesn't seems to depend on full version: %s not found in %s" euscan.output.einfo("Url doesn't seems to depend on full version: %s not found in %s"
% (ver, url)) % (ver, url))
return [] return []
else: else:
output.einfo("Brute forcing: %s" % template) euscan.output.einfo("Brute forcing: %s" % template)
result = [] result = []
@ -173,7 +179,7 @@ def brute_force(cpv, url):
result.append([url, version]) result.append([url, version])
if len(result) > CONFIG['brute-force-false-watermark']: if len(result) > CONFIG['brute-force-false-watermark']:
output.einfo("Broken server detected ! Skipping brute force.") euscan.output.einfo("Broken server detected ! Skipping brute force.")
return [] return []
if CONFIG["brute-force-recursive"]: if CONFIG["brute-force-recursive"]:

View File

@ -0,0 +1,34 @@
from euscan.handlers import generic
def can_handle(cpv, url):
if url.startswith('mirror://kde/'):
return True
return False
def clean_results(results):
ret = []
for path, version in results:
if version == '5SUMS':
continue
ret.append((path, version))
return ret
def scan(cpv, url):
results = generic.scan(cpv, url)
if url.startswith('mirror://kde/unstable/'):
url = url.replace('mirror://kde/unstable/', 'mirror://kde/stable/')
results += generic.scan(cpv, url)
return clean_results(results)
def brute_force(cpv, url):
results = generic.brute_force(cpv, url)
if url.startswith('mirror://kde/unstable/'):
url = url.replace('mirror://kde/unstable/', 'mirror://kde/stable/')
results += generic.brute_force(cpv, url)
return clean_results(results)

View File

@ -3,7 +3,8 @@ import portage
import urllib2 import urllib2
import xml.dom.minidom import xml.dom.minidom
from euscan import helpers, output from euscan import helpers
import euscan
def can_handle(cpv, url): def can_handle(cpv, url):
if url.startswith('http://pear.php.net/get/'): if url.startswith('http://pear.php.net/get/'):
@ -29,7 +30,7 @@ def scan(cpv, url):
orig_url = url orig_url = url
url = 'http://%s/rest/r/%s/allreleases.xml' % (channel, pkg.lower()) url = 'http://%s/rest/r/%s/allreleases.xml' % (channel, pkg.lower())
output.einfo("Using: " + url) euscan.output.einfo("Using: " + url)
try: try:
fp = helpers.urlopen(url) fp = helpers.urlopen(url)

View File

@ -4,7 +4,8 @@ import re
import portage import portage
from euscan import helpers, output from euscan import helpers
import euscan
def can_handle(cpv, url): def can_handle(cpv, url):
return url.startswith('mirror://pypi/') return url.startswith('mirror://pypi/')
@ -24,7 +25,7 @@ def scan(cpv, url):
package = guess_package(cpv, url) package = guess_package(cpv, url)
output.einfo("Using PyPi XMLRPC: " + package) euscan.output.einfo("Using PyPi XMLRPC: " + package)
client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi') client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi')
versions = client.package_releases(package) versions = client.package_releases(package)

View File

@ -3,7 +3,8 @@ import portage
import json import json
import urllib2 import urllib2
from euscan import helpers, output from euscan import helpers
import euscan
def can_handle(cpv, url): def can_handle(cpv, url):
return url.startswith('mirror://rubygems/') return url.startswith('mirror://rubygems/')
@ -24,7 +25,7 @@ def scan(cpv, url):
gem = guess_gem(cpv, url) gem = guess_gem(cpv, url)
url = 'http://rubygems.org/api/v1/versions/%s.json' % gem url = 'http://rubygems.org/api/v1/versions/%s.json' % gem
output.einfo("Using: " + url) euscan.output.einfo("Using: " + url)
try: try:
fp = helpers.urlopen(url) fp = helpers.urlopen(url)

View File

@ -15,7 +15,8 @@ except ImportError:
import portage import portage
from portage import dep from portage import dep
from euscan import CONFIG, BLACKLIST_VERSIONS, ROBOTS_TXT_BLACKLIST_DOMAINS, output from euscan import CONFIG, BLACKLIST_VERSIONS, ROBOTS_TXT_BLACKLIST_DOMAINS
import euscan
def htop_vercmp(a, b): def htop_vercmp(a, b):
def fixver(v): def fixver(v):
@ -87,7 +88,7 @@ def version_blacklisted(cp, version):
None None
if rule: if rule:
output.einfo("%s is blacklisted by rule %s" % (cpv, bv)) euscan.output.einfo("%s is blacklisted by rule %s" % (cpv, bv))
return rule is not None return rule is not None
def version_filtered(cp, base, version): def version_filtered(cp, base, version):
@ -254,7 +255,7 @@ def urlallowed(url):
def urlopen(url, timeout=None, verb="GET"): def urlopen(url, timeout=None, verb="GET"):
if not urlallowed(url): if not urlallowed(url):
output.einfo("Url '%s' blocked by robots.txt" % url) euscan.output.einfo("Url '%s' blocked by robots.txt" % url)
return None return None
if not timeout: if not timeout:
@ -287,17 +288,17 @@ def tryurl(fileurl, template):
result = True result = True
if not urlallowed(fileurl): if not urlallowed(fileurl):
output.einfo("Url '%s' blocked by robots.txt" % fileurl) euscan.output.einfo("Url '%s' blocked by robots.txt" % fileurl)
return None return None
output.ebegin("Trying: " + fileurl) euscan.output.ebegin("Trying: " + fileurl)
try: try:
basename = os.path.basename(fileurl) basename = os.path.basename(fileurl)
fp = urlopen(fileurl, verb='HEAD') fp = urlopen(fileurl, verb='HEAD')
if not fp: if not fp:
output.eend(errno.EPERM) euscan.output.eend(errno.EPERM)
return None return None
headers = fp.info() headers = fp.info()
@ -328,21 +329,31 @@ def tryurl(fileurl, template):
except IOError: except IOError:
result = None result = None
output.eend(errno.ENOENT if not result else 0) euscan.output.eend(errno.ENOENT if not result else 0)
return result return result
def regex_from_template(template): def regex_from_template(template):
# Escape
template = re.escape(template) template = re.escape(template)
# Unescape specific stuff
template = template.replace('\$\{', '${') template = template.replace('\$\{', '${')
template = template.replace('\}', '}') template = template.replace('\}', '}')
template = template.replace('}\.$', '}.$') template = template.replace('}\.$', '}.$')
template = template.replace('${1}', r'([\d]+?)')
template = re.sub(r'(\$\{\d+\}\.?)+', r'([\w]+?)', template) # Replace ${\d+}
#template = template.replace('${0}', r'([\d]+?)')
template = re.sub(r'(\$\{\d+\}(\.?))+', r'([\w\.]+?)', template)
#template = re.sub(r'(\$\{\d+\}\.?)+', r'([\w]+?)', template) #template = re.sub(r'(\$\{\d+\}\.?)+', r'([\w]+?)', template)
#template = re.sub(r'(\$\{\d+\}\.+)+', '(.+?)\.', template) #template = re.sub(r'(\$\{\d+\}\.+)+', '(.+?)\.', template)
#template = re.sub(r'(\$\{\d+\})+', '(.+?)', template) #template = re.sub(r'(\$\{\d+\})+', '(.+?)', template)
# Full version
template = template.replace('${PV}', _v) template = template.replace('${PV}', _v)
# End
template = template + r'/?$' template = template + r'/?$'
return template return template
@ -371,6 +382,7 @@ def generate_scan_paths(url):
else: else:
path += "/" path += "/"
path += chunk path += chunk
return steps return steps
def parse_mirror(uri): def parse_mirror(uri):
@ -383,8 +395,8 @@ def parse_mirror(uri):
eidx = uri.find("/", 9) eidx = uri.find("/", 9)
if eidx == -1: if eidx == -1:
output.einfo("Invalid mirror definition in SRC_URI:\n") euscan.output.einfo("Invalid mirror definition in SRC_URI:\n")
output.einfo(" %s\n" % (uri)) euscan.output.einfo(" %s\n" % (uri))
return None return None
mirrorname = uri[9:eidx] mirrorname = uri[9:eidx]
@ -395,7 +407,7 @@ def parse_mirror(uri):
shuffle(mirrors) shuffle(mirrors)
uri = mirrors[0].strip("/") + "/" + path uri = mirrors[0].strip("/") + "/" + path
else: else:
output.einfo("No known mirror by the name: %s\n" % (mirrorname)) euscan.output.einfo("No known mirror by the name: %s" % (mirrorname))
return None return None
return uri return uri

View File

@ -11,10 +11,12 @@ from gentoolkit import errors
from gentoolkit.query import Query from gentoolkit.query import Query
from gentoolkit.eclean.search import (port_settings) from gentoolkit.eclean.search import (port_settings)
from euscan import CONFIG, BLACKLIST_PACKAGES, output from euscan import CONFIG, BLACKLIST_PACKAGES
from euscan import handlers from euscan import handlers
from euscan import helpers from euscan import helpers
import euscan
def filter_versions(cp, versions): def filter_versions(cp, versions):
filtered = {} filtered = {}
@ -31,18 +33,19 @@ def filter_versions(cp, versions):
filtered[version] = url filtered[version] = url
return [ (filtered[version], version) for version in filtered ] return [ (cp, filtered[version], version) for version in filtered ]
def scan_upstream_urls(cpv, urls): def scan_upstream_urls(cpv, urls):
versions = [] versions = []
for filename in urls: for filename in urls:
for url in urls[filename]: for url in urls[filename]:
if not CONFIG['quiet']:
pp.uprint() pp.uprint()
output.einfo("SRC_URI is '%s'" % url) euscan.output.einfo("SRC_URI is '%s'" % url)
if '://' not in url: if '://' not in url:
output.einfo("Invalid url '%s'" % url) euscan.output.einfo("Invalid url '%s'" % url)
continue continue
''' Try normal scan ''' ''' Try normal scan '''
@ -80,13 +83,15 @@ def scan_upstream(query):
pkg = matches.pop() pkg = matches.pop()
if not pkg: if not pkg:
sys.stderr.write(pp.warn("Package '%s' only have a dev version (9999)" % pp.pkgquery(pkg.cp))) sys.stderr.write(pp.warn("Package '%s' only have a dev version (9999)"
% pp.pkgquery(pkg.cp)))
return [] return []
if pkg.cp in BLACKLIST_PACKAGES: if pkg.cp in BLACKLIST_PACKAGES:
sys.stderr.write(pp.warn("Package '%s' is blacklisted" % pp.pkgquery(pkg.cp))) sys.stderr.write(pp.warn("Package '%s' is blacklisted" % pp.pkgquery(pkg.cp)))
return [] return []
if not CONFIG['quiet']:
pp.uprint(" * %s [%s]" % (pp.cpv(pkg.cpv), pp.section(pkg.repo_name()))) pp.uprint(" * %s [%s]" % (pp.cpv(pkg.cpv), pp.section(pkg.repo_name())))
pp.uprint() pp.uprint()

View File

@ -21,7 +21,7 @@ cwd = os.getcwd()
try: try:
from portage.const import EPREFIX from portage.const import EPREFIX
except ImportError: except ImportError:
EPREFIX='/' EPREFIX=''
# Python files that need `__version__ = ""` subbed, relative to this dir: # Python files that need `__version__ = ""` subbed, relative to this dir:
python_scripts = [os.path.join(cwd, path) for path in ( python_scripts = [os.path.join(cwd, path) for path in (
@ -72,15 +72,16 @@ core.setup(
maintainer='Corentin Chary', maintainer='Corentin Chary',
maintainer_email='corentin.chary@gmail.com', maintainer_email='corentin.chary@gmail.com',
url='http://euscan.iksaif.net', url='http://euscan.iksaif.net',
download_url='http://git.iksaif.net/?p=euscan.git;a=snapshot;h=HEAD;sf=tgz', download_url='https://github.com/iksaif/euscan/tarball/' + ('master' if __version__ == '9999' else ('euscan-%s' % __version__)),
package_dir={'': 'pym'}, package_dir={'': 'pym'},
packages=packages, packages=packages,
package_data = {}, package_data = {},
scripts=python_scripts, scripts=python_scripts,
data_files=( data_files=(
(os.path.join(EPREFIX, 'usr/share/man/man1'), glob('man/*')), (os.path.join(os.sep, EPREFIX.lstrip(os.sep), 'usr/share/man/man1'), glob('man/*')),
), ),
cmdclass={ cmdclass={
'set_version': set_version, 'set_version': set_version,
}, },
) )