Beispiel #1
0
 def parse_pkg_build(self, pkg, start=None):
     if isinstance(pkg, PackageBuild): 
         pkg.pkg_src = self.parse_pkg_src(pkg.pkg_src, start)
         if pkg.cmake and not os.path.isabs(pkg.cmake):
             pkg.cmake = util.actual_path(pkg.cmake, start)
         return pkg
     else: return PackageBuild(self.parse_pkg_src(pkg, start))
Beispiel #2
0
def find_cmake(p, start):
    if p and not os.path.isabs(p):
        absp = util.actual_path(p, start)
        if os.path.exists(absp): return absp
        else:
            x = util.cget_dir('cmake', p)
            if os.path.exists(x): return x
            elif os.path.exists(x + '.cmake'): return x + '.cmake'
    return p
Beispiel #3
0
 def from_file(self, file, url=None, no_recipe=False):
     if file is None:
         return
     if not os.path.exists(file):
         self.log("file not found: " + file)
         return
     start = os.path.dirname(file)
     if url is not None and url.startswith('file://'):
         start = url[7:]
     with open(file) as f:
         self.log("parse file: " + file)
         for line in f.readlines():
             tokens = shlex.split(line, comments=True)
             if len(tokens) > 0: 
                 pb = parse_pkg_build_tokens(tokens)
                 ps = self.from_file(util.actual_path(pb.file, start), no_recipe=no_recipe) if pb.file else [self.parse_pkg_build(pb, start=start, no_recipe=no_recipe)]
                 for p in ps: yield p
Beispiel #4
0
 def parse_pkg_src(self, pkg, start=None):
     if isinstance(pkg, PackageSource): return pkg
     if isinstance(pkg, PackageBuild): return self.parse_pkg_src(pkg.pkg_src, start)
     name, url = parse_alias(pkg)
     self.log('parse_pkg_src:', name, url, pkg)
     if '://' not in url:
         f = util.actual_path(url, start)
         self.log('parse_pkg_src atual_path:', start, f)
         # f = os.path.abspath(os.path.expanduser(url))
         if os.path.exists(f):
             url = 'file://' + f
         else:
             x = url.split('@')
             p = x[0]
             v = 'HEAD'
             if len(x) > 1: v = x[1]
             if '/' in p: url = 'https://github.com/{0}/archive/{1}.tar.gz'.format(p, v)
             if name is None: name = p
     return PackageSource(name=name, url=url)
Beispiel #5
0
 def parse_pkg_src(self, pkg, start=None):
     if isinstance(pkg, PackageSource): return pkg
     if isinstance(pkg, PackageBuild): return self.parse_pkg_src(pkg.pkg_src, start)
     name, url = parse_alias(pkg)
     self.log('parse_pkg_src:', name, url, pkg)
     if '://' not in url:
         f = util.actual_path(url, start)
         self.log('parse_pkg_src atual_path:', start, f)
         # f = os.path.abspath(os.path.expanduser(url))
         if os.path.exists(f):
             url = 'file://' + f
         else:
             x = url.split('@')
             p = x[0]
             v = 'HEAD'
             if len(x) > 1: v = x[1]
             if '/' in p: url = 'https://github.com/{0}/archive/{1}.tar.gz'.format(p, v)
             if name is None: name = p
     return PackageSource(name=name, url=url)
Beispiel #6
0
 def parse_src_file(self, name, url, start=None):
     f = util.actual_path(url, start)
     self.log('parse_src_file actual_path:', start, f)
     if os.path.exists(f): return PackageSource(name=name, url='file://' + f)
     return None