view specs/gub.py @ 0:55f300e8a131

initial import
author hanwen <hanwen@xs4all.nl>
date Sun, 20 Nov 2005 21:43:50 +0100
parents
children 3fd05f082eb5
line wrap: on
line source

import os
import sys
import re

def system (cmd, ignore_error = False):
	sys.stderr.write ('invoking %s\n' % cmd)
	stat = os.system (cmd)
	if stat and not ignore_error:
		sys.stderr.write ('fail\n')
		sys.exit (1)

	return 0 



class Package:
	def __init__ (self, settings):
		self.settings = settings
	
	def download (self):
		dir = self.settings.downloaddir
		if not os.path.exists (dir + '/' + self.file_name ()): 
			system ('cd %s ; wget %s ' % (dir, self.url))

	def unpack_destination (self):
		return self.settings.srcdir
	
	def basename (self):
		f = self.file_name ()
		f = re.sub ("\.tar.*", '', f)
		return f

	def name (self):
		s = self.basename()
		s = re.sub ('-?[0-9][^-]+$', '', s)
		return s
	
	def srcdir (self):
		return self.unpack_destination () + '/' + self.basename ()

	def builddir (self):
		return self.settings.builddir + '/' + self.basename ()

	def installdir (self):
		return self.settings.installdir + '/' + self.name ()

	def file_name (self):
		file = re.sub (".*/([^/]+)", '\\1', self.url)
		return file


	def done (self, stage):
		return os.path.exists ('%s/%s-%s' % (self.settings.statusdir, self.name (), stage))

	def set_done (self, stage):
		open ('%s/%s-%s' % (self.settings.statusdir, self.name(), stage), 'w').write ('')

	def configure_command (self):
		return ("%s/configure --prefix=%s "
			% (self.srcdir (), self.installdir ()))

	def configure (self):
		system ("mkdir -p %s;  cd %s && %s" % (self.builddir(),
						       self.builddir(),
						       self.configure_command ()))

	def install_command (self):
		return 'make install'
	
	def install (self):
		system ("cd %s && %s" % (self.builddir (), self.install_command ())) 

	def compile_command (self):
		return 'make'

	def compile (self):
		system ("cd %s && %s" % (self.builddir(), self.compile_command ()))

	def patch (self):
		pass
	
	def unpack (self):
		file = self.settings.downloaddir + '/' + self.file_name ()

		cmd = ""
		if re.search (".tar$", file):
			cmd = "-xf "
		elif re.search (".tar.bz2", file):
			cmd = "-jxf "
		elif re.search ('.tar.gz', file):
			cmd = '-xzf '

		cmd = "tar %s %s -C %s " % (cmd, file, self.unpack_destination ())
		system (cmd)