def build_contrib_pysite_deps(target_dir): if os.path.isdir(target_dir): fs.rmtree(target_dir) os.makedirs(target_dir) # build dependencies pythonexe = get_pythonexe_path() for dep in get_contrib_pysite_deps(): subprocess.check_call([ pythonexe, "-m", "pip", "install", # "--no-cache-dir", "--no-compile", "--no-binary", ":all:", "-t", target_dir, dep, ]) # build manifests with open(os.path.join(target_dir, "package.json"), "w") as fp: json.dump( dict( name="contrib-pysite", version="2.%d%d.%s" % ( sys.version_info.major, sys.version_info.minor, date.today().strftime("%y%m%d"), ), system=util.get_systype(), ), fp, ) pm = ToolPackageManager() pkg = PackageItem(target_dir) pkg.metadata = pm.build_metadata( target_dir, PackageSpec(owner="platformio", name="contrib-pysite")) pkg.dump_meta() return True
def build_contrib_pysite_package(target_dir, with_metadata=True): systype = util.get_systype() if os.path.isdir(target_dir): fs.rmtree(target_dir) os.makedirs(target_dir) # build dependencies args = [ get_pythonexe_path(), "-m", "pip", "install", "--no-compile", "-t", target_dir, ] if "linux" in systype: args.extend(["--no-binary", ":all:"]) for dep in get_contrib_pysite_deps(): subprocess.check_call(args + [dep]) # build manifests with open(os.path.join(target_dir, "package.json"), "w") as fp: json.dump( dict( name="contrib-pysite", version="2.%d%d.%s" % ( sys.version_info.major, sys.version_info.minor, date.today().strftime("%y%m%d"), ), system=list( set([systype, "linux_armv6l", "linux_armv7l", "linux_armv8l"]) ) if systype.startswith("linux_arm") else systype, description="Extra Python package for PlatformIO Core", keywords=["platformio", "platformio-core"], homepage="https://docs.platformio.org/page/core/index.html", repository={ "type": "git", "url": "https://github.com/platformio/platformio-core", }, ), fp, ) # generate package metadata if with_metadata: pm = ToolPackageManager() pkg = PackageItem(target_dir) pkg.metadata = pm.build_metadata( target_dir, PackageSpec(owner="platformio", name="contrib-pysite") ) pkg.dump_meta() # remove unused files for root, dirs, files in os.walk(target_dir): for t in ("_test", "test", "tests"): if t in dirs: shutil.rmtree(os.path.join(root, t)) for name in files: if name.endswith((".chm", ".pyc")): os.remove(os.path.join(root, name)) return target_dir