diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-06 09:13:45 -0400 | 
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-06 09:13:45 -0400 | 
| commit | 8fe362df5f58d2d51270641ae9f9fb1566352f34 (patch) | |
| tree | c882d26725b5b2f6e83dde2a0c6a3eb28dc8f25c | |
| parent | bc9d2243a5260170a3f7c47d67646d7784fab4b3 (diff) | |
| download | cbc-8fe362df5f58d2d51270641ae9f9fb1566352f34.tar.gz | |
Add shell enviroment to Environment. Add copy_patches.
| -rw-r--r-- | cbc/meta.py | 18 | ||||
| -rwxr-xr-x | cbcbuild.py | 5 | 
2 files changed, 19 insertions, 4 deletions
| diff --git a/cbc/meta.py b/cbc/meta.py index 7203726..2a72148 100644 --- a/cbc/meta.py +++ b/cbc/meta.py @@ -4,7 +4,10 @@ And yeah, conda supports Jinja2, but ugh... No.  import os
  import conda_build.metadata
 +import conda_build.environ
  import yaml
 +import shutil
 +from glob import glob
  from configparser import SafeConfigParser, ExtendedInterpolation
  from collections import OrderedDict
  from .environment import Environment
 @@ -19,12 +22,13 @@ class MetaData(object):              raise OSError('"{0}" does not exist.'.format(filename));
          self.filename = filename
 +        self.confdir = os.path.dirname(self.filename)
          if not isinstance(env, Environment):
              raise MetaDataError('Expecting instance of cbc.environment.Environment, got: "{0}"'.format(type(env)))
          self.env = env
 -        self.builtins = ['cbc_build', 'cbc_cgi']
 +        self.builtins = ['cbc_build', 'cbc_cgi', 'environ']
          self.fields = self.convert_conda_fields(conda_build.metadata.FIELDS)
 @@ -34,10 +38,12 @@ class MetaData(object):          self.config.read_dict(self.fields)
          # Include user-defined build fields
          self.config.read(self.filename)
 +        # Assimilate conda environment variables
 +        self.config['environ'] = conda_build.environ.get_dict()
          # Convert ConfigParser -> generic dictionary
          self.local = self.as_dict(self.config)
 -        
 +
          #if not self.local['requirements']['build']:
          #    raise MetaDataError('Incomplete or missing "requirements" section: self.local[\'requirements\'] ', self.local['requirements']['build'])
 @@ -63,7 +69,7 @@ class MetaData(object):          # Convert dict to YAML-compatible dict
          self.conda_metadata = self.scrub(self.local, self.builtins)
 -        
 +
      def run(self):
          self.render_scripts()
 @@ -76,6 +82,12 @@ class MetaData(object):                      with open(maskval, 'w+') as metafile:
                          metafile.write(metaval)
 +    def copy_patches(self):
 +        extensions = ['*.diff', '*.patch']
 +        for extension in extensions:
 +            path = os.path.join(self.confdir, extension)
 +            for patch in glob(path):
 +                shutil.copy2(patch, self.env.pkgdir)
      def compile(self):
          compiled = {}
 diff --git a/cbcbuild.py b/cbcbuild.py index 52672b4..b1cad72 100755 --- a/cbcbuild.py +++ b/cbcbuild.py @@ -40,7 +40,8 @@ if __name__ == '__main__':          elif not os.path.isfile(cbcfile):              print('{} is not a file.'.format(cbcfile))              exit(1) -         +     +    print('CBC_HOME is {0}'.format(os.environ['CBC_HOME']))      # Perform build(s)      for cbcfile in args.cbcfile:          print('Using cbc build configuration: {0}'.format(cbcfile)) @@ -50,8 +51,10 @@ if __name__ == '__main__':          metadata = cbc.meta.MetaData(cbcfile, env)          metadata.env.mkpkgdir(metadata.local['package']['name'])          metadata.render_scripts() +        metadata.copy_patches()          if args.no_build: +            print('Scripts written to {0}'.format(metadata.env.pkgdir))              continue          conda_metadata = conda_build.metadata.MetaData(env.pkgdir) | 
