Files
OpenUxAS-bootstrap/specs/uxas.anod
M. Anthony Aiello 9fc3b3d3ee Feature/improve setenv (#37)
* Expose more paths through anod-setenv

Update the specs for:

- amase
- uxas
- uxas-ada

so that anod-setenv exposes more details of where things are in the sandbox. These changes should make it easier for users to find where anod is putting things. These changes also support updates to the run-examples script, which will migrate to OpenUxAS.

* Add needed dependency for running uxas-ada

The uxas-ada binary is not statically linked, so the library for zeromq needs to be on the library path.
2020-04-30 11:45:02 -04:00

81 lines
2.7 KiB
Plaintext

from e3.anod.helper import Make
from e3.anod.spec import Anod
from e3.anod.loader import spec
from e3.fs import mkdir, cp
import os
class Uxas(spec('common')):
@property
def build_deps(self):
return [
Anod.Dependency('pugixml'),
Anod.Dependency('zeromq'),
Anod.Dependency('cppzmq'),
Anod.Dependency('uxas-lmcp', qualifier='lang=cpp'),
Anod.Dependency('serial'),
Anod.Dependency('czmq'),
Anod.Dependency('zyre'),
Anod.Dependency('sqlite'),
Anod.Dependency('boost'),
Anod.Dependency('sqlitecpp')]
@property
def build_source_list(self):
return [Anod.Source(name='uxas-src',
publish=True, dest='')]
@property
def build_space_name(self):
# We use a separate build space for each scenario
return "%s-%s" % (self.name, self.scenario)
@property
def source_pkg_build(self):
return [self.SourceBuilder(name='uxas-src',
fullname=lambda x: 'uxas-src.tar.gz',
checkout=["openuxas"])]
@property
def scenario(self):
"""Return selected scenario."""
return self.parsed_qualifier.get('scenario', 'release')
def setenv(self):
self.env.add_path(os.path.join(self.build_space.install_dir, 'bin'))
# Expose directories related to UXAS so that the user can more readily
# work with the result of the build.
os.environ['UXAS_BUILD_DIR'] = self.build_space.build_dir
os.environ['UXAS_SOURCE_DIR'] = self.build_space.src_dir
os.environ['UXAS_INSTALL_DIR'] = self.build_space.install_dir
def build_setenv(self):
self.deps['zeromq'].setenv(shared=False)
self.deps['cppzmq'].setenv()
self.deps['pugixml'].setenv()
self.deps['serial'].setenv()
self.deps['uxas-lmcp'].setenv()
self.deps['czmq'].setenv()
self.deps['zyre'].setenv()
self.deps['sqlite'].setenv()
self.deps['sqlitecpp'].setenv()
self.deps['boost'].setenv()
self.deps['czmq'].setenv()
@Anod.primitive()
def build(self):
self.build_setenv()
self.log.info('LIBRARY_PATH: %s', os.environ['LIBRARY_PATH'])
make = Make(self,
exec_dir=self.build_space.src_dir)
make.set_var('OBJECT_DIR', self.build_space.build_dir)
if self.scenario == 'gcov':
make.set_var('ENABLE_COVERAGE', 'true')
make.set_var('DEBUG_BUILD', 'true')
make('all')
mkdir(os.path.join(self.build_space.install_dir, 'bin'))
cp(os.path.join(self.build_space.build_dir, 'uxas'),
os.path.join(self.build_space.install_dir, 'bin'))