11#!/usr/bin/env python
2- import os , shutil , sys , tarfile
2+ # Create a new Sage Notebook spkg.
3+
4+ import os
5+ import sys
6+ import stat
7+ import shutil
8+ import tarfile
9+ import subprocess
310from tempfile import mkdtemp
411
512from pkg_resources import Requirement
613from setuptools .package_index import PackageIndex
7- # Create an spkg of the Separated Sage notebook for inclusion in Sage.
814
9- # Get the version from setup.py
15+ # Get the version from setup.py.
1016version_line = [f for f in open ('setup.py' ).readlines () if 'version' in f ][0 ]
1117i = version_line .find ("'" )
1218j = version_line .rfind ("'" )
13- version = version_line [i + 1 :j ]
19+ version = version_line [i + 1 :j ]
1420
15- # Create the sdist
21+ # Create the source distribution.
22+ proc = subprocess .Popen ([os .path .join (os .path .curdir , 'sdist' )], shell = True )
23+ if proc .wait ():
24+ print "Uncommitted changes in repository. Stopping."
25+ sys .exit (1 )
1626
17- os .system (os .path .join (os .path .curdir , 'sdist' ))
18-
19- # Create the spkg
20-
21- path = os .path .join ('dist' ,'sagenb-%s' % version )
27+ # Create the spkg.
28+ base = 'sagenb-%s' % version
29+ path = os .path .join ('dist' , base )
2230if os .path .exists (path ):
2331 shutil .rmtree (path )
24-
2532os .makedirs (path )
2633
27- file = 'sagenb-%s.tar.gz' % version
28- print "Extracting %s" % file
34+ file = 'sagenb-%s.tar.gz' % version
35+ print "Extracting %s" % file
2936t = tarfile .open (os .path .join ('dist' , file ))
30-
3137t .extractall (path )
3238
3339os .chdir (path )
3440os .mkdir ('src' )
35- shutil .move ('sagenb-%s' % version , 'src/ sagenb' )
41+ shutil .move (base , os . path . join ( 'src' , 'sagenb' ) )
3642
37- spkg_install_fd = open ('spkg-install' ,'w' )
38- spkg_install_fd .write ("cd src; " )
43+ spkg_install = os .path .abspath (os .path .join (os .path .curdir , 'spkg-install' ))
44+ spkg_install_fd = open (spkg_install , 'w' )
45+ spkg_install_fd .write ("cd src\n " )
3946
4047shutil .copy (os .path .join (os .path .pardir , os .path .pardir , 'SPKG.txt' ),
4148 os .path .curdir )
@@ -44,24 +51,34 @@ print "Fetching the required packages"
4451pkg_index = PackageIndex ()
4552
4653tmp_dir = mkdtemp ()
47- required_packages = ('pytz>=2009r' , 'zope.i18nmessageid>=3.5' , 'zope.event>=3.4.1' ,
48- 'ClientForm>=0.2.10' , 'mechanize>=0.1.11' , 'zope.interface>=3.3.0' ,
49- 'zope.schema>=3.5.4' , 'zope.testbrowser>=3.7.0a1' )
54+ required_packages = ('pytz>=2009r' ,
55+ 'zope.i18nmessageid>=3.5' ,
56+ 'zope.event>=3.4.1' ,
57+ 'ClientForm>=0.2.10' ,
58+ 'mechanize>=0.1.11' ,
59+ 'zope.interface>=3.3.0' ,
60+ 'zope.schema>=3.5.4' ,
61+ 'zope.testbrowser>=3.7.0a1' )
62+
5063pkg_locations = []
5164
5265for pkg in required_packages :
5366 print "Fetching %s" % pkg
54- dist = pkg_index .fetch_distribution (Requirement .parse (pkg ), tmp_dir , True , True )
67+ dist = pkg_index .fetch_distribution (Requirement .parse (pkg ), tmp_dir ,
68+ True , True )
5569 pkg_locations .append (os .path .abspath (dist .location ))
5670
5771for location in pkg_locations :
5872 shutil .copy (location , 'src' )
59- spkg_install_fd .write ('easy_install %s; ' % os .path .basename (location ))
73+ spkg_install_fd .write ('easy_install %s\n ' % os .path .basename (location ))
6074
6175os .chdir (os .path .pardir )
6276
63- spkg_install_fd .write ('cd sagenb; python setup.py install' )
77+ spkg_install_fd .write ('cd sagenb\n ' )
78+ spkg_install_fd .write ('python setup.py install\n ' )
6479spkg_install_fd .close ()
80+ os .chmod (spkg_install , stat .S_IRWXU | stat .S_IRGRP | stat .S_IXGRP |
81+ stat .S_IROTH | stat .S_IXOTH )
6582shutil .rmtree (tmp_dir )
66- os .system ('sage -pkg sagenb-%s' % version )
6783
84+ subprocess .call (['sage -pkg ' + base ], shell = True )
0 commit comments