blob: f5468dc4781a38abb60503a0eeb99a432635ad95 [file]
#!/usr/bin/env python3
import argparse
import logging
import shutil
from pathlib import Path
def create_packaging_workspace(directory):
# Create the directory for packaging workspace
if len(directory or "") > 0:
workspace_dir = Path(directory)
else:
# This script is located in packaging-pypi/bitbake-setup/package-bitbake-setup.py
workspace_dir = Path(__file__).parents[2] / "packaging-workspace"
if not workspace_dir.exists():
logging.debug(f"Created packaging workspace at: {workspace_dir}")
workspace_dir.mkdir(exist_ok=True)
else:
logging.debug(f"Packaging workspace already exists at: {workspace_dir}")
# Copy packaging files to the workspace
files_to_copy = [
"packaging-pypi/bitbake-setup/pyproject.toml",
"packaging-pypi/bitbake-setup/README.md",
"packaging-pypi/bitbake-setup/LICENSE",
"LICENSE.MIT",
"LICENSE.GPL-2.0-only"
]
for file in files_to_copy:
src_path = Path(__file__).parents[2] / file
dest_path = workspace_dir / Path(file).name
if src_path.is_dir():
shutil.copytree(src_path, dest_path, dirs_exist_ok=True)
logging.debug(f"Copied directory: {src_path} to {dest_path}")
else:
shutil.copy2(src_path, dest_path)
logging.debug(f"Copied file: {src_path} to {dest_path}")
# Copy necessary modules to the workspace
modules_to_bundle = [
"lib/bb",
]
for module in modules_to_bundle:
src_path = Path(__file__).parents[2] / module
dest_path = workspace_dir / "src" / Path(module).name
if src_path.is_dir():
shutil.copytree(src_path, dest_path, dirs_exist_ok=True)
logging.debug(f"Bundled module directory: {src_path} to {dest_path}")
else:
shutil.copy2(src_path, dest_path)
logging.debug(f"Bundled module file: {src_path} to {dest_path}")
# Create bitbake_setup module
bitbake_setup_dir = Path(workspace_dir / "src" / "bitbake_setup")
bitbake_setup_dir.mkdir(exist_ok=True)
Path(bitbake_setup_dir / "__init__.py").touch()
shutil.copy2(Path(__file__).parents[2] / "bin" / "bitbake-setup", str(bitbake_setup_dir / "__main__.py"))
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
parser = argparse.ArgumentParser(description='Package bitbake-setup for PyPI')
parser.add_argument('-v', '--verbose', action='store_true', help='increase output verbosity.')
parser.add_argument('-d', '--directory', type=str, help='specify the directory to create the packaging workspace in.')
args = parser.parse_args()
if args.verbose:
logging.getLogger().setLevel(logging.DEBUG)
create_packaging_workspace(args.directory)