def _build(self, conanfile, pref, build_folder): # Read generators from conanfile and generate the needed files logger.info("GENERATORS: Writing generators") write_generators(conanfile, build_folder, self._output) # Build step might need DLLs, binaries as protoc to generate source files # So execute imports() before build, storing the list of copied_files copied_files = run_imports(conanfile, build_folder) try: self._hook_manager.execute("pre_build", conanfile=conanfile, reference=pref.ref, package_id=pref.id) logger.debug("Call conanfile.build() with files in build folder: %s", os.listdir(build_folder)) self._output.highlight("Calling build()") with conanfile_exception_formatter(str(conanfile), "build"): conanfile.build() self._output.success("Package '%s' built" % pref.id) self._output.info("Build folder %s" % build_folder) self._hook_manager.execute("post_build", conanfile=conanfile, reference=pref.ref, package_id=pref.id) except Exception as exc: self._output.writeln("") self._output.error("Package '%s' build failed" % pref.id) self._output.warn("Build folder %s" % build_folder) if isinstance(exc, ConanExceptionInUserConanfileMethod): raise exc raise ConanException(exc) finally: # Now remove all files that were imported with imports() remove_imports(conanfile, copied_files, self._output)
def _build(self, conanfile, pref): # Read generators from conanfile and generate the needed files logger.info("GENERATORS: Writing generators") self._generator_manager.write_generators(conanfile, conanfile.build_folder, self._output) logger.info("TOOLCHAIN: Writing toolchain") write_toolchain(conanfile, conanfile.build_folder, self._output) # Build step might need DLLs, binaries as protoc to generate source files # So execute imports() before build, storing the list of copied_files copied_files = run_imports(conanfile, conanfile.build_folder) try: run_build_method(conanfile, self._hook_manager, reference=pref.ref, package_id=pref.id) self._output.success("Package '%s' built" % pref.id) self._output.info("Build folder %s" % conanfile.build_folder) except Exception as exc: self._output.writeln("") self._output.error("Package '%s' build failed" % pref.id) self._output.warn("Build folder %s" % conanfile.build_folder) if isinstance(exc, ConanExceptionInUserConanfileMethod): raise exc raise ConanException(exc) finally: # Now remove all files that were imported with imports() remove_imports(conanfile, copied_files, self._output)
def _build_package(self): """ calls the imports + conanfile.build() method """ os.chdir(self.build_folder) self._conan_file.build_folder = self.build_folder self._conan_file.package_folder = self.package_folder # In local cache, install folder always is build_folder self._conan_file.install_folder = self.build_folder # Read generators from conanfile and generate the needed files logger.debug("Writing generators") write_generators(self._conan_file, self.build_folder, self._out) logger.debug("Files copied after generators %s", os.listdir(self.build_folder)) # Build step might need DLLs, binaries as protoc to generate source files # So execute imports() before build, storing the list of copied_files from conans.client.importer import run_imports copied_files = run_imports(self._conan_file, self.build_folder, self._out) try: # This is necessary because it is different for user projects # than for packages self._plugin_manager.execute( "pre_build", conanfile=self._conan_file, reference=self._conan_ref, package_id=self._package_reference.package_id) logger.debug( "Call conanfile.build() with files in build folder: %s", os.listdir(self.build_folder)) self._out.highlight("Calling build()") with conanfile_exception_formatter(str(self._conan_file), "build"): self._conan_file.build() self._out.success("Package '%s' built" % self._conan_file.info.package_id()) self._out.info("Build folder %s" % self.build_folder) self._plugin_manager.execute( "post_build", conanfile=self._conan_file, reference=self._conan_ref, package_id=self._package_reference.package_id) except Exception as exc: self._out.writeln("") self._out.error("Package '%s' build failed" % self._conan_file.info.package_id()) self._out.warn("Build folder %s" % self.build_folder) if isinstance(exc, ConanExceptionInUserConanfileMethod): raise exc raise ConanException(exc) finally: # Now remove all files that were imported with imports() remove_imports(self._conan_file, copied_files, self._out)
def _build_package(self): """ calls the imports + conanfile.build() method """ os.chdir(self.build_folder) self._conan_file.build_folder = self.build_folder self._conan_file.package_folder = self.package_folder # In local cache, install folder always is build_folder self._conan_file.install_folder = self.build_folder # Read generators from conanfile and generate the needed files logger.debug("Writing generators") write_generators(self._conan_file, self.build_folder, self._out) logger.debug("Files copied after generators %s", os.listdir(self.build_folder)) # Build step might need DLLs, binaries as protoc to generate source files # So execute imports() before build, storing the list of copied_files from conans.client.importer import run_imports copied_files = run_imports(self._conan_file, self.build_folder, self._out) try: # This is necessary because it is different for user projects # than for packages logger.debug("Call conanfile.build() with files in build folder: %s", os.listdir(self.build_folder)) self._out.highlight("Calling build()") with conanfile_exception_formatter(str(self._conan_file), "build"): self._conan_file.build() self._out.success("Package '%s' built" % self._conan_file.info.package_id()) self._out.info("Build folder %s" % self.build_folder) except Exception as exc: self._out.writeln("") self._out.error("Package '%s' build failed" % self._conan_file.info.package_id()) self._out.warn("Build folder %s" % self.build_folder) if isinstance(exc, ConanExceptionInUserConanfileMethod): raise exc raise ConanException(exc) finally: # Now remove all files that were imported with imports() remove_imports(self._conan_file, copied_files, self._out)