{"id":20849452,"url":"https://github.com/ai-mindset/py-cross-compile","last_synced_at":"2026-04-11T19:02:48.667Z","repository":{"id":260750548,"uuid":"882242655","full_name":"ai-mindset/py-cross-compile","owner":"ai-mindset","description":"Automated Python-to-binary compiler for Windows, macOS, and Linux, using PyInstaller and GitHub Actions.","archived":false,"fork":false,"pushed_at":"2025-01-21T14:31:28.000Z","size":109,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T12:17:52.656Z","etag":null,"topics":["cross-compile","github-actions","linux","macos","pyinstaller","unix","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ai-mindset.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-02T09:29:24.000Z","updated_at":"2025-01-21T14:31:31.000Z","dependencies_parsed_at":"2024-11-02T10:25:33.430Z","dependency_job_id":"0ee45099-d16c-486d-b94f-2118a63d6db9","html_url":"https://github.com/ai-mindset/py-cross-compile","commit_stats":null,"previous_names":["ai-mindset/py-cross-compile"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/ai-mindset/py-cross-compile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2Fpy-cross-compile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2Fpy-cross-compile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2Fpy-cross-compile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2Fpy-cross-compile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ai-mindset","download_url":"https://codeload.github.com/ai-mindset/py-cross-compile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai-mindset%2Fpy-cross-compile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011862,"owners_count":26085005,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-compile","github-actions","linux","macos","pyinstaller","unix","windows"],"created_at":"2024-11-18T03:05:09.214Z","updated_at":"2025-10-12T15:46:34.783Z","avatar_url":"https://github.com/ai-mindset.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PDF to Markdown Converter\n\n[![Code Quality](https://github.com/ai-mindset/py-cross-compile/actions/workflows/code-quality.yml/badge.svg)](https://github.com/ai-mindset/py-cross-compile/actions/workflows/code-quality.yml)\n[![Tests](https://github.com/ai-mindset/py-cross-compile/actions/workflows/tests.yml/badge.svg)](https://github.com/ai-mindset/py-cross-compile/actions/workflows/tests.yml)\n[![Unix Build and Release](https://github.com/ai-mindset/py-cross-compile/actions/workflows/unix-build.yml/badge.svg)](https://github.com/ai-mindset/py-cross-compile/actions/workflows/unix-build.yml)\n[![Windows Build and Release](https://github.com/ai-mindset/py-cross-compile/actions/workflows/win-build.yml/badge.svg)](https://github.com/ai-mindset/py-cross-compile/actions/workflows/win-build.yml)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n\n\nA GUI application for converting PDF documents to Markdown using pypdf. This project primarily serves as an experiment in cross-compilation using GitHub Actions, demonstrating how to build Python applications for multiple platforms from a single Linux environment.\n\n## Project Goals\n\n1. **Cross-Compilation Experimentation**\n   - Build from Linux for Windows, macOS, and Linux targets\n   - Support both x86_64 and ARM64 architectures\n   - Create self-contained executables without target OS access\n   - Handle dependencies and resources across platforms\n   - Automate the release process\n\n2. **Technical Implementation**\n   - Modern Python practices (3.11+)\n   - Type-safe code with comprehensive testing\n   - Memory-efficient PDF processing\n   - User-friendly GUI interface\n\n## Features\n\n- Cross-platform PDF to Markdown conversion\n- Table extraction in fast and accurate modes\n- Memory-efficient processing\n- Simple, native-looking GUI\n- Self-contained executables\n\n## Requirements\n\n- Python 3.11 or newer\n- Operating System: Windows, macOS, or Linux\n\n## Installation\n\n### End Users\n\nDownload the appropriate executable for your system from the [Releases](https://github.com/ai-mindset/py-cross-compile/releases) page:\n\n- Windows: `pdf-converter-windows-x86_64.exe`\n- macOS:\n  - Intel: `pdf-converter-macos-x86_64`\n  - Apple Silicon: `pdf-converter-macos-arm64`\n- Linux:\n  - x86_64: `pdf-converter-linux-x86_64`\n  - ARM64: `pdf-converter-linux-aarch64`\n\n### Developers\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/ai-mindset/py-cross-compile.git\ncd py-cross-compile\n```\n\n2. Create a virtual environment:\n```bash\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n```\n\n3. Install dependencies:\n```bash\npip install -e \".[dev]\"\n```\n\n## Development\n\n### Code Quality\n```bash\n# Format and lint code\nruff check .\nruff format .\n\n# Type checking\nmypy src\n```\n\n### Testing\n```bash\npytest\n```\n\n### Creating a Release\n\n1. Update version in `pyproject.toml`\n2. Update CHANGELOG.md\n3. Create and push a new tag:\n```bash\ngit tag v1.0.0\ngit push origin v1.0.0\n```\n\nThe GitHub Action will automatically:\n- Run tests\n- Build executables for all platforms\n- Create a new release with the binaries\n\n## Project Structure\n```\npdf_converter/\n├── src/\n│   └── pdf_converter/\n│       ├── __init__.py\n│       ├── app.py\n│       └── resources/\n│           └── .gitkeep\n├── tests/\n│   ├── __init__.py\n│   └── test_app.py\n├── .github/\n│   └── workflows/\n│       ├── code-quality.yml\n│       ├── tests.yml\n│       ├── win-build.yml\n│       └── unix-build.yml\n├── .gitignore\n├── LICENSE\n├── pyproject.toml\n└── README.md\n```\n\n## Cross-Compilation Details\n\n### Build Process\n- Uses GitHub Actions with Ubuntu runners\n- Leverages QEMU for ARM64 builds\n- PyInstaller for executable creation\n- Automated resource bundling\n\n### Supported Platforms\n- Windows (x86_64)\n- macOS (x86_64, ARM64)\n- Linux (x86_64, ARM64)\n\n### CI/CD Pipeline\n1. **Code Quality** (`code-quality.yml`)\n   - Ruff (linting and formatting)\n   - MyPy (type checking)\n   - Security checks (disabled for now)\n\n2. **Tests** (`tests.yml`)\n   - Multiple Python versions\n   - Multiple operating systems\n   - Coverage reporting\n\n3. **Unix Build \u0026 Release** (`unix-build.yml`)\n   - MacOS and Linux x86-64 and ARM builds\n   - Automatic releases on tags\n   - Asset uploading\n\n\n4. **Windows Build \u0026 Release** (`win-build.yml`)\n   - Windows x86_64 builds\n   - Automatic releases on tags\n   - Asset uploading\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Run quality checks:\n```bash\nruff check . \u0026\u0026 ruff format . \u0026\u0026 mypy src \u0026\u0026 pytest\n```\n4. Commit your changes (`git commit -m 'Add amazing feature'`)\n5. Push to the branch (`git push origin feature/amazing-feature`)\n6. Create a Pull Request\n\n## License\n\nMIT License - see [`LICENSE`](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fai-mindset%2Fpy-cross-compile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fai-mindset%2Fpy-cross-compile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fai-mindset%2Fpy-cross-compile/lists"}