code: def recompile_pymods(self):
      log.warning("Using build from {}".format(self.build_dir))
      # force a rebuild of all modules that use OpenSSL APIs
      for fname in self.module_files:
          os.utime(fname, None)
      # remove all build artefacts
      for root, dirs, files in os.walk("build"):
          for filename in files:
              if filename.startswith(self.module_libs):
                  os.unlink(os.path.join(root, filename))
  
      # overwrite header and library search paths
      env = os.environ.copy()
      env["CPPFLAGS"] = "-I{}".format(self.include_dir)
      env["LDFLAGS"] = "-L{}".format(self.lib_dir)
      # set rpath
      env["LD_RUN_PATH"] = self.lib_dir
  
      log.info("Rebuilding Python modules")
      cmd = ["make", "sharedmods", "checksharedmods"]
      self._subprocess_call(cmd, env=env)
      self.check_imports()
  
imports: from __future__ import print_function
  import argparse
  from datetime import datetime
  import logging
  import os
  import re
  import shutil
  import subprocess
  import sys
  import tarfile
label_desc: Use image node_id 21 for calling the AbstractBuilder obj's underlying member method code with example usage: obj.recompile_pymods() without return types