* 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:
+2
-17
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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')
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user