code: def run(self):
      if not self.libraries:
          return
  
      # Make sure that library sources are complete.
      languages = []
  
      # Make sure that extension sources are complete.
      self.run_command("build_src")
  
      for lib_name, build_info in self.libraries:
          l = build_info.get("language", None)
          if l and l not in languages:
              languages.append(l)
  
      from distutils.ccompiler import new_compiler
  
      self.compiler = new_compiler(
          compiler=self.compiler, dry_run=self.dry_run, force=self.force
      )
      self.compiler.customize(
          self.distribution, need_cxx=self.have_cxx_sources()
      )
  
      libraries = self.libraries
      self.libraries = None
      self.compiler.customize_cmd(self)
      self.libraries = libraries
  
      self.compiler.show_customization()
  
      if self.have_f_sources():
          from numpy.distutils.fcompiler import new_fcompiler
  
          self._f_compiler = new_fcompiler(
              compiler=self.fcompiler,
              verbose=self.verbose,
              dry_run=self.dry_run,
              force=self.force,
              requiref90="f90" in languages,
              c_compiler=self.compiler,
          )
          if self._f_compiler is not None:
              self._f_compiler.customize(self.distribution)
  
              libraries = self.libraries
              self.libraries = None
              self._f_compiler.customize_cmd(self)
              self.libraries = libraries
  
              self._f_compiler.show_customization()
      else:
          self._f_compiler = None
  
      self.build_libraries(self.libraries)
  
      if self.inplace:
          for l in self.distribution.installed_libraries:
              libname = self.compiler.library_filename(l.name)
              source = os.path.join(self.build_clib, libname)
              target = os.path.join(l.target_dir, libname)
              self.mkpath(l.target_dir)
              shutil.copy(source, target)
  
file_path: catboost/contrib/python/numpy/py2/numpy/distutils/command/build_clib.py
imports: from __future__ import division, absolute_import, print_function
  import os
  from glob import glob
  import shutil
  from distutils.command.build_clib import build_clib
  from distutils.errors import DistutilsSetupError, DistutilsError, DistutilsFileError
  from numpy.distutils import log
  from distutils.dep_util import newer_group
  from numpy.distutils.misc_util import filter_sources, has_f_sources, has_cxx_sources, all_strings, get_lib_source_files, is_sequence, get_numpy_include_dirs
label_desc: Use image node_id 5 for calling the build_clib obj's underlying member method code with example usage: obj.run() without return types