Author: hwright
Date: Mon Jun 13 15:07:32 2011
New Revision: 1135127

URL: http://svn.apache.org/viewvc?rev=1135127&view=rev
Log:
In release.py, handle the fetching of libtool, autoconf and swig independently,
rather than as part of a big jumble.  It's probably possible to introduce a
bit of code reuse here, but this is a general architecture improvement (as
will be demonstrated in a bit).

* tools/dist/release.py
  (download_file): New.
  (prep_autoconf, prep_libtool, prep_swig): New.
  (build_env): Tease out the above functions, and use them.

Modified:
    subversion/trunk/tools/dist/release.py

Modified: subversion/trunk/tools/dist/release.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/dist/release.py?rev=1135127&r1=1135126&r2=1135127&view=diff
==============================================================================
--- subversion/trunk/tools/dist/release.py (original)
+++ subversion/trunk/tools/dist/release.py Mon Jun 13 15:07:32 2011
@@ -67,6 +67,13 @@ def run_script(verbose, script):
     for l in script.split('\n'):
         subprocess.check_call(l.split(), stdout=stdout, stderr=stderr)
 
+def download_file(url, target):
+    response = urllib2.urlopen(url)
+    target_file = open(target, 'w')
+    target_file.write(response.read())
+
+#----------------------------------------------------------------------
+# Cleaning up the environment
 
 def cleanup(base_dir, args):
     'Remove generated files and folders.'
@@ -78,73 +85,89 @@ def cleanup(base_dir, args):
 #----------------------------------------------------------------------
 # Creating and environment to roll the release
 
-def build_env(base_dir, args):
-    'Download prerequisites for a release and prepare the environment.'
-    logging.info('Creating release environment')
-
-    # Versions of our environment
-    params = { 'autoconf'           : 'autoconf-2.68',
-               'libtool'            : 'libtool-2.4',
-               'swig'               : 'swig-2.0.4',
-               'sf_mirror'          : args.sf_mirror,
-             }
-
-    prefix = get_prefix(base_dir)
-    if os.path.exists(prefix):
-        raise RuntimeError("Directory exists: '%s'" % prefix)
-    os.mkdir(prefix)
-
-    tempdir = get_tempdir(base_dir)
-    if os.path.exists(tempdir):
-        raise RuntimeError("Directory exists: '%s'" % tempdir)
-    os.mkdir(tempdir)
-
-    objects = { 'autoconf' : 
'http://ftp.gnu.org/gnu/autoconf/%(autoconf)s.tar.gz',
-                'libtool' : 
'http://ftp.gnu.org/gnu/libtool/%(libtool)s.tar.gz',
-                'swig' : 
'http://sourceforge.net/projects/swig/files/swig/%(swig)s/%(swig)s.tar.gz/download?use_mirror=%(sf_mirror)s'
-              }
-
-    # Grab each of the prerequisite tarballs
-    for key, value in objects.items():
-        url = value % params
-        response = urllib2.urlopen(url)
-        target = open(os.path.join(get_tempdir(base_dir), key + '.tar.gz'), 
'w')
-        target.write(response.read())
-        target.close()
-
-        target = tarfile.open(os.path.join(get_tempdir(base_dir),
-                                           key + '.tar.gz'))
-        target.extractall(get_tempdir(base_dir))
-
+def prep_autoconf(base_dir, args):
+    'Download and build autoconf'
     cwd = os.getcwd()
+    filebase = 'autoconf-2.68'
+    url = 'http://ftp.gnu.org/gnu/autoconf/%s.tar.gz' % filebase
+    tarball = os.path.join(get_tempdir(base_dir), filebase + '.tar.gz')
+
+    logging.info('Fetching %s' % filebase)
+    download_file(url, tarball)
+    tarfile.open(tarball).extractall(get_tempdir(base_dir))
 
-    # build autoconf
     logging.info('Building autoconf')
-    os.chdir(os.path.join(get_tempdir(base_dir), params['autoconf']))
+    os.chdir(os.path.join(get_tempdir(base_dir), filebase))
     run_script(args.verbose,
                '''./configure --prefix=%s
                   make
                   make install''' % get_prefix(base_dir))
 
-    # build libtool
+    os.chdir(cwd)
+
+
+def prep_libtool(base_dir, args):
+    'Download and build libtool'
+    cwd = os.getcwd()
+    filebase = 'libtool-2.4'
+    url = 'http://ftp.gnu.org/gnu/libtool/%s.tar.gz' % filebase
+    tarball = os.path.join(get_tempdir(base_dir), filebase + '.tar.gz')
+
+    logging.info('Fetching %s' % filebase)
+    download_file(url, tarball)
+    tarfile.open(tarball).extractall(get_tempdir(base_dir))
+
     logging.info('Building libtool')
-    os.chdir(os.path.join(get_tempdir(base_dir), params['libtool']))
+    os.chdir(os.path.join(get_tempdir(base_dir), filebase))
     run_script(args.verbose,
                '''./configure --prefix=%s
                   make
                   make install''' % get_prefix(base_dir))
 
-    # build swig
+    os.chdir(cwd)
+
+def prep_swig(base_dir, args):
+    'Download and build swig'
+    cwd = os.getcwd()
+    filebase = 'swig-2.0.4'
+    url = 
'http://sourceforge.net/projects/swig/files/swig/%(swig)s/%(swig)s.tar.gz/download?use_mirror=%(sf_mirror)s'
 % \
+        { 'swig' : filebase,
+          'sf_mirror' : args.sf_mirror }
+    tarball = os.path.join(get_tempdir(base_dir), filebase + '.tar.gz')
+
+    logging.info('Fetching %s' % filebase)
+    download_file(url, tarball)
+    tarfile.open(tarball).extractall(get_tempdir(base_dir))
+
     logging.info('Building swig')
-    os.chdir(os.path.join(get_tempdir(base_dir), params['swig']))
+    os.chdir(os.path.join(get_tempdir(base_dir), filebase))
     run_script(args.verbose,
-               '''./configure --prefix=%s --without-pcre
+               '''./configure --prefix=%s
                   make
                   make install''' % get_prefix(base_dir))
 
     os.chdir(cwd)
 
 
+def build_env(base_dir, args):
+    'Download prerequisites for a release and prepare the environment.'
+    logging.info('Creating release environment')
+
+    prefix = get_prefix(base_dir)
+    if os.path.exists(prefix):
+        raise RuntimeError("Directory exists: '%s'" % prefix)
+    os.mkdir(prefix)
+
+    tempdir = get_tempdir(base_dir)
+    if os.path.exists(tempdir):
+        raise RuntimeError("Directory exists: '%s'" % tempdir)
+    os.mkdir(tempdir)
+
+    prep_autoconf(base_dir, args)
+    prep_libtool(base_dir, args)
+    prep_swig(base_dir, args)
+
+
 def roll_tarballs(base_dir, args):
     'Create the release artifacts.'
 


Reply via email to