示例#1
0
文件: builder.cpp 项目: bunsanorg/pm
void repository::builder::build(const entry &package) {
  try {
    BUNSAN_LOG_DEBUG << "Starting \"" << package << "\" " << __func__;
    const tempfile build_dir_ = local_system_().tempdir_for_build();
    const boost::filesystem::path build_dir = build_dir_.path();
    const boost::filesystem::path src =
        build_dir / m_config.name.dir.get_source();
    const boost::filesystem::path build =
        build_dir / m_config.name.dir.get_build();
    const boost::filesystem::path installation =
        build_dir / m_config.name.dir.get_installation();
    // create/clean directories
    boost::filesystem::create_directory(src);
    boost::filesystem::create_directory(build);
    boost::filesystem::create_directory(installation);
    // unpack source
    snapshot snapshot_;
    unpack_source(package, src, snapshot_);
    get_builder()->install(build_dir / m_config.name.dir.get_source(),
                           build_dir / m_config.name.dir.get_build(),
                           build_dir / m_config.name.dir.get_installation());
    cache_().pack_build(package,
                        build_dir / m_config.name.dir.get_installation());
    write_snapshot(cache_().build_snapshot_path(package), snapshot_);
  } catch (std::exception &) {
    BOOST_THROW_EXCEPTION(builder_build_error()
                          << builder_build_error::package(package)
                          << enable_nested_current());
  }
}
示例#2
0
文件: builder.cpp 项目: bunsanorg/pm
repository::builder::builder(repository &self, const build_config &config)
    : m_self(self), m_config(config) {
  for (const auto builder_cfg : config.builders) {
    if (m_builders.find(builder_cfg.first) != m_builders.end())
      BOOST_THROW_EXCEPTION(
          invalid_configuration_duplicate_builder_error()
          << invalid_configuration_duplicate_builder_error::builder(
              builder_cfg.first));
    const auto builder =
        builder_cfg.second.instance_optional(local_system_().resolver());
    if (!builder)
      BOOST_THROW_EXCEPTION(
          invalid_configuration_builder_error()
          << invalid_configuration_builder_error::builder(builder_cfg.first)
          << invalid_configuration_builder_error::utility_type(
                 builder_cfg.second.type));
    m_builders[builder_cfg.first] = builder;
  }
  m_builder = get_builder(distributor_().format().builder);
}
示例#3
0
 std::string const& namespace_alias() const {
     return get_builder().options_.namespace_alias_;
 }