* dizinleri dinamik yap, destdir destegi icin gerekli

* install iskeletine biraz daha sekil ver
* build fonksiyonunu olmasi gerektigi gibi build.py'e tasi
* ufak kozmetik seyler
This commit is contained in:
Eray Özkural
2005-06-13 12:34:51 +00:00
parent 6dfa8979b5
commit 5888f2463c
6 changed files with 63 additions and 36 deletions
+2 -17
View File
@@ -15,11 +15,6 @@ Usage:
%s [options] package-name.pspec
""" %(progname)
def doProgress(filename, percent, rate, symbol):
out = '\r%-30.30s %3d%% %12.2f %s' % \
(pd['filename'], pd['percent'], pd['rate'], pd['symbol'])
pisi.ui.info(out)
def main():
import sys
import getopt
@@ -51,19 +46,9 @@ def main():
else:
pspec = args[0]
# doing the real job.
# don't do the real job here. this is just a CLI!
pb = PisiBuild(pspec)
pisi.ui.info("Building PISI source package: %s\n" % pb.spec.sourceName)
pisi.ui.info("Fetching source from: %s (be patient)\n" % pb.spec.archiveUri)
pb.fetchArchive(doProgress)
pisi.ui.info("Source archive is stored: %s/%s\n" %(pisi.config.archives_dir, pb.archiveName))
# pb.unpackArchive()
# pb.applyPatches()
# pb.buildSource()
# pb.installTarget()
pb.buildPackages()
pb.install()
if __name__ == "__main__":
+20 -2
View File
@@ -17,6 +17,12 @@ import ui
class PisiBuildError(Exception):
pass
# FIXME: this eventually has to go to ui module
def displayProgress(pd):
out = '\r%-30.30s %3d%% %12.2f %s' % \
(pd['filename'], pd['percent'], pd['rate'], pd['symbol'])
ui.info(out)
class PisiBuild:
"""PisiBuild class, provides the package build and creation routines"""
def __init__(self, pspecfile):
@@ -29,8 +35,20 @@ class PisiBuild:
self.archiveName = basename(spec.archiveUri)
self.spec = spec
def install(self):
ui.info("Building PISI source package: %s\n" % self.spec.sourceName)
ui.info("Fetching source from: %s" % self.spec.archiveUri)
self.fetchArchive(displayProgress)
ui.info("\n")
ui.info("Source archive is stored: %s/%s\n" %(config.archives_dir(), self.archiveName))
# unpackArchive()
# applyPatches()
# buildSource()
# installTarget()
self.buildPackages()
def fetchArchive(self, percentHook=None):
"""fetch an archive and store to pisi.config.archives_dir
"""fetch an archive and store to config.archives_dir()
using fether.Fetcher"""
fetch = Fetcher(self.spec.archiveUri)
@@ -38,7 +56,7 @@ class PisiBuild:
destpath = fetch.filedest + "/" + fetch.filename
if os.access(destpath, os.R_OK):
if util.md5_file(destpath)==self.spec.archiveMD5:
ui.info(fetch.filename + " cached\n")
ui.info(' [cached]')
return
if percentHook:
+22 -4
View File
@@ -1,7 +1,25 @@
# -*- coding: utf-8 -*-
# PISI configuration (static and dynamic)
lib_dir = "/var/lib/pisi"
db_dir = "/var/db/pisi"
archives_dir = "/var/cache/pisi/archives"
tmp_dir = "/var/tmp/pisi"
lib_dir_suffix = "/var/lib/pisi"
db_dir_suffix = "/var/db/pisi"
archives_dir_suffix = "/var/cache/pisi/archives"
tmp_dir_suffix = "/var/tmp/pisi"
destdir = '' # install default to root by default
destdir = './test' # only for ALPHA
# the idea is that destdir can be set with --destdir=...
def lib_dir():
return destdir + lib_dir_suffix
def db_dir():
return destdir + db_dir_suffix
def archives_dir():
return destdir + archives_dir_suffix
def tmp_dir():
return destdir + tmp_dir_suffix
+1 -1
View File
@@ -21,7 +21,7 @@ class Fetcher:
"""Yet another Pisi tool for fetching files from various sources.."""
def __init__(self, uri):
self.uri = uri
self.filedest = config.archives_dir
self.filedest = config.archives_dir()
util.check_dir(self.filedest)
self.scheme = "file"
self.netloc = ""
+14 -9
View File
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#import package
from specfile import SpecFile
from specfile import *
from package import Package
import util
import ui
@@ -10,23 +10,28 @@ import packagedb
import dependency
#import conflicts
class InstallError(Exception):
pass
def install_package_file(package_fn):
package = Package(package_fn, 'r')
# extract control files
util.clean_directory(install_dir)
ui.info.('extracting files\n')
package.extract_files(install_dir)
util.clean_directory(install_dir())
ui.info('extracting files\n')
package.extract_files(install_dir())
# verify package
# check if we have all required files
spec = PackageSpecFile()
spec.read(install_dir + '/pspec.xml')
# check pspec semantics
spec.verify()
metadata = MetaData()
metadata.read(install_dir() + '/metadata.xml')
# check package semantics
metadata.verify()
# check file system requirements
# what to do if / is split into /usr, /var, etc.?
# check conflicts
# check dependencies
@@ -35,5 +40,5 @@ def install_package_file(package_fn):
# update databases
# installdb
installdb.install(spec.spec.install_dir + '/files.xml')
installdb.install(spec.spec.install_dir() + '/files.xml')
+4 -3
View File
@@ -2,14 +2,15 @@
# installation database
# maintainer: eray and caglar
from config import *
import config
import shelve
import util
util.check_dir( config.db_dir() )
d = shelve.open( db_dir + '/install.dbm')
d = shelve.open( config.db_dir() + '/install.dbm')
files_dir = archive_dir + "/files"
files_dir = config.archives_dir() + "/files"
class InstallDBError(Exception):
pass