[120858] branches/gsoc14-pip2port/tester.py

gaurav at macports.org gaurav at macports.org
Tue Jun 10 03:02:02 PDT 2014


Revision: 120858
          https://trac.macports.org/changeset/120858
Author:   gaurav at macports.org
Date:     2014-06-10 03:02:02 -0700 (Tue, 10 Jun 2014)
Log Message:
-----------
Portfile method improvement

Modified Paths:
--------------
    branches/gsoc14-pip2port/tester.py

Modified: branches/gsoc14-pip2port/tester.py
===================================================================
--- branches/gsoc14-pip2port/tester.py	2014-06-10 04:02:10 UTC (rev 120857)
+++ branches/gsoc14-pip2port/tester.py	2014-06-10 10:02:02 UTC (rev 120858)
@@ -19,6 +19,8 @@
 except ImportError:
     import xmlrpc.client as xmlrpclib
 import textwrap
+import string
+import shutil
 
 client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi')
 
@@ -130,6 +132,22 @@
         print "\n"
         return False
 
+def fetch_url(pkg_name,pkg_version,checksum=False,deps=False):
+    values = client.release_urls(pkg_name,pkg_version)
+    if checksum:
+        for value in values:
+            if value['filename'].split('.')[-1] == 'gz':
+                return fetch(pkg_name,value)
+            
+#    elif deps:
+#        for value in values:
+#            if not value['filename'].split('.')[-1] == 'gz':
+#                return fetch(pkg_name,value)        
+    else:
+        print "\n"
+        for value in values:
+            return fetch(pkg_name,value)        
+
 def dependencies(pkg_name,pkg_version,deps=False):
     if not deps:
         return
@@ -142,25 +160,29 @@
         list = f.readlines()
         list = [x.strip('\n') for x in list]
         f.close()
+        try:
+            shutil.rmtree('./sources/'+pkg_name+'/EGG-INFO', ignore_errors=True)
+            items = os.listdir('./sources/'+pkg_name)
+            for item in items[:]:
+                if not item.split('.')[-1] == 'gz':
+                    os.remove('./sources/'+pkg_name+'/'+item)
+                    items.remove(item)
+
+            if not items:
+                os.rmdir('./sources/'+pkg_name)
+        except:
+            print ""
         return list
     except:
+        items = os.listdir('./sources/'+pkg_name)
+        for item in items[:]:
+            if not item.split('.')[-1] == 'gz':
+                os.remove('./sources/'+pkg_name+'/'+item)
+                items.remove(item)
+        if not items:
+            os.rmdir('./sources/'+pkg_name)
         return False
 
-def fetch_url(pkg_name,pkg_version,checksum=False,deps=False):
-    values = client.release_urls(pkg_name,pkg_version)
-    if checksum:
-        for value in values:
-            if value['filename'].split('.')[-1] == 'gz':
-                return fetch(pkg_name,value)
-            
-#    elif deps:
-#        for value in values:
-#            if not value['filename'].split('.')[-1] == 'gz':
-#                return fetch(pkg_name,value)        
-    else:
-        print "\n"
-        for value in values:
-            return fetch(pkg_name,value)        
 
 def checksums(pkg_name,pkg_version):
     file_name = fetch_url(pkg_name,pkg_version,True)
@@ -174,23 +196,17 @@
             checksums.insert(0,h.hexdigest())
             checksums.insert(1,hashlib.sha256(f.read()).hexdigest())
             f.close()
+            dir = '/'.join(file_name.split('/')[0:-1])
+            os.remove(file_name)
+            try:
+                os.rmdir(dir)
+            except OSError as ex:
+                print 
             return checksums
         except:
             print "Error\n"
             return
 
-#def checksum_sha256(pkg_name,pkg_version):
-#    file_name = fetch_url(pkg_name,pkg_version,True)
-#    print file_name
-#    if file_name:
-#        try:
-#            f = open(file_name)
-#            checksum = hashlib.sha256(f.read()).hexdigest()
-#            f.close()
-#            return checksum
-#        except:
-#            print "Error\n"
-#            return
 
 def create_portfile(dict,file_name,dict2):
     file = open(file_name, 'w')
@@ -204,31 +220,38 @@
     file.write('version             '+dict['version']+'\n')
 #    file.write('categories-append   replaceme\n\n')
 
-    file.write('platforms           darwin\n')    
+    file.write('platforms           darwin\n')
     file.write('license             '+dict['license']+'\n')
     if dict['maintainer']:
-        file.write('maintainer          ' + dict['maintainer'] + '\n\n')
+        file.write('maintainers         ' + ' '.join(dict['maintainer']) + '\n\n')
     else:
-        file.write('maintainer          nomaintainer\n\n')
+        file.write('maintainers         nomaintainer\n\n')
 
         
     file.write('description         '+dict['summary']+'\n\n')
 #    file.write('long_description    '+dict['description']+'\n\n')
-    lines = textwrap.wrap(dict['description'],width=70)
-    file.write('long_description    ')
-    for line in lines:
-        if line:
-            if not lines.index(line)==0:
-                file.write('                    ')
-            if line == lines[-1]:
-                file.write(line+"\n")
-            else:
-                file.write(line + " \\\n")
-
+    description = dict['description']
+    if description:
+#        description = string.replace(description,'{',' ')
+        lines = textwrap.wrap(dict['description'],width=70)
+        file.write('long_description    ')
+        for line in lines:
+            if line:
+                if not lines.index(line)==0:
+                    file.write('                    ')
+                if line == lines[-1]:
+                    file.write(line+"\n")
+                else:
+                    file.write(line + " \\\n")
+    else:
+        file.write('long_description    '+'${description}'+'\n\n')
+    
     file.write('homepage            '+dict['home_page']+'\n')
 
-    master_site = '/'.join(dict2[0]['url'].split('/')[0:-1])
-
+    if dict2:
+        master_site = '/'.join(dict2[0]['url'].split('/')[0:-1])
+    else:
+        master_site = ''
     file.write('master_sites        '+master_site+'\n')
     file.write('distname            py-'+dict['name']+dict['version']+'\n\n')
 #    rmd160 = checksum_rmd160(dict['name'],dict['version'])
@@ -239,10 +262,15 @@
         file.write('checksums           rmd160  '+checksums_values[0]+' \\\n')
         file.write('                    sha256  '+checksums_values[1]+'\n\n')
 
-    file.write('python.versions     25 26 27\n\n')
+    python_vers = dict['requires_python']
+    if python_vers:
+        file.write('python.versions     25 26 27 '+dict['requires_python']+'\n\n')
+    else:
+        file.write('python.versions     25 26 27\n\n')
+    
     file.write('if {${name} ne ${subport}} {\n')
     file.write('    depends_build       port:py${python.version}-setuptools\n')
-    deps = dependencies(dict['name'],dict['version'])
+    deps = dependencies(dict['name'],dict['version'],True)
     if deps:
         for dep in deps:
             file.write('                        port:py-'+dep+'\n')
@@ -252,6 +280,7 @@
     file.write('    livecheck.type      regex\n')
     file.write('    livecheck.url       ${master_sites}\n')
 #    file.write('    livecheck.regex     \n')
+    file.write('}\n')
 
 #    file.write('    post-destroot {\n')
 
@@ -262,19 +291,20 @@
 def print_portfile(pkg_name,pkg_version=None):
     print "\n"
     root_dir = os.path.abspath("./sources")
-    home_dir = os.path.join(root_dir,pkg_name)
-    src_dir = os.path.join(home_dir,"PortFile")
+    port_dir = os.path.join(root_dir,'Python')
+    home_dir = os.path.join(port_dir,pkg_name)
+#    src_dir = os.path.join(home_dir,"PortFile")
     if not os.path.exists(root_dir):
         os.makedirs(root_dir)
+    if not os.path.exists(port_dir):
+        os.makedirs(port_dir)
     if not os.path.exists(home_dir):
         os.makedirs(home_dir)
-    if not os.path.exists(src_dir):
-        os.makedirs(src_dir)
 
     dict = client.release_data(pkg_name,pkg_version)
     dict2 = client.release_urls(pkg_name,pkg_version)
 
-    file_name = os.path.join(src_dir,"Test_Portfile")
+    file_name = os.path.join(home_dir,"Portfile")
 #    try:
 #        create_portfile(dict,file_name,dict2)
 #        print "SUCCESS\n"
@@ -298,7 +328,7 @@
                         dest='package_fetch', nargs=2, required=False, 
                         help='Fetches distfiles for a package by <package_name> and <package_version>')
     parser.add_argument('-p', '--portfile', action='store', type=str,
-                        dest='package_portfile', nargs=2, required=False, 
+                        dest='package_portfile', nargs='*', required=False, 
                         help='Prints the portfile for a package by <package_name> and <package_version>')
     options = parser.parse_args()
 #    print options
@@ -342,8 +372,9 @@
 #            print "PORTFILE %s %s\n" % (pkg_name,pkg_version)
             print_portfile(pkg_name,pkg_version)
         else:
-            if client.package_releases(pkg_name):
-                pkg_version = client.packages_releases(pkg_name)[0]
+            vers = client.package_releases(pkg_name)
+            if vers:
+                pkg_version = vers[0]
 #                print "PORTFILE %s %s\n" % (pkg_name,pkg_version)
                 print_portfile(pkg_name,pkg_version)
         return
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140610/989292d5/attachment.html>


More information about the macports-changes mailing list