// file : mod/build-config.hxx -*- C++ -*- // copyright : Copyright (c) 2014-2018 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef MOD_BUILD_CONFIG_HXX #define MOD_BUILD_CONFIG_HXX #include #include // find() #include #include #include #include #include #include // Various build-related state and utilities. // namespace brep { using bbot::build_config; // Return pointer to the shared build configurations instance, creating one // on the first call. Throw tab_parsing on parsing error, io_error on the // underlying OS error. Is not thread-safe. // shared_ptr shared_build_config (const path&); // Map of build bot agent public keys fingerprints to the key file paths. // using bot_agent_keys = std::map; // Return pointer to the shared build bot agent public keys map, creating // one on the first call. Throw system_error on the underlying openssl or OS // error. Not thread-safe. // shared_ptr shared_bot_agent_keys (const options::openssl_options&, const dir_path&); // Return the package configuration build log url. By default the url is to // the operations combined log. // string build_log_url (const string& host, const dir_path& root, const build&, const string* operation = nullptr); // Return the package configuration forced rebuild url. // string force_rebuild_url (const string& host, const dir_path& root, const build&); // Check if the configuration belongs to the specified class. // inline bool belongs (const build_config& cfg, const char* cls) { const strings& cs (cfg.classes); return find (cs.begin (), cs.end (), cls) != cs.end (); } // Return true if the specified build configuration is excluded by a package // based on its underlying build class set, build class expressions, and // build constraints, potentially extending the underlying set with the // special classes. Set the exclusion reason if requested. // bool exclude (const build_class_exprs&, const build_constraints&, const build_config&, string* reason = nullptr); inline bool exclude (const build_package& p, const build_config& c, string* r = nullptr) { return exclude (p.builds, p.constraints, c, r); } // Convert dash-separated components (target, build configuration name, // machine name) or a pattern thereof into a path, replacing dashes with // slashes (directory separators), `**` with `*/**/*`, and appending the // trailing slash for a subsequent match using the path_match() // functionality (the idea here is for `linux**` to match `linux-gcc` which // is quite natural to expect). Throw invalid_path if the resulting path is // invalid. // // Note that the match_absent path match flag must be used for the above // `**` transformation to work. // path dash_components_to_path (const string&); } #endif // MOD_BUILD_CONFIG_HXX