Skip to content

[Todo] PyPackPack Initial Development #2

@haesol-shin

Description

@haesol-shin

Todo

Overall

  • Create the basic structure of the plugin.
    • Python version setup
      • Version Enum (alpha, rc, normal)
      • do not support automatic build for new python release
    • Build target platform setup
      • Platform-specific min sdk setting
      • Check Kotlin-side enabled build target
    • Hot reload / Code Push
      • Expose direct run button for hot reload server
    • SourceSet setup (dependencies)
      • implementation
      • integration
      • etcs (src/resource path, sourceset naming, ...)
  • Implement a setup for detecting and downloading necessary external tools.
    • Nuitka
    • Host Python
    • MSVC, Clang
    • Poetry or UV
    • Crossenv or something equivalent
  • Define behavior for different compilation modes (e.g., debug/release, project flavors).
    • Support build variants
    • Support project flavors
    • Support methods per compile levels
      • instant (pure python)
      • bytecode (debug: .py+.pyc / release: .pyc only - use debugable flag internally for this so that users can override the settings)
      • mixed (compiled site-packages, pure user code)
      • native (fully compiled code via nuitka or lpython)

Build Tools

  • Configure Nuitka as the primary build tool for Python files.
    • But, give option to choose different compile tool for future.
    • Description: Frontend(PyPackPack) <=> MiddleWare(Nuitka) <=> Backend(Clang, ...)
  • Create scripts for automating the setup of Nuitka and its dependencies.
  • Test the compatibility of generated builds with Android targets.
  • Python code minification

Decisions

  • Determine the installation path for Python (and any user libraries).
  • Decide whether to extract libraries for every build or cache them locally.
  • Define the storage location for files required during the build process.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions