Files
nextcloud-share/.plans/DockerForVitaSDK.md

363 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Docker Build Environment Plan for VitaSDK (PS Vita)
**Status**: Planning / Research
**Last Updated**: 2026-01-27
---
## Overview
PS Vita homebrew development uses **VitaSDK**, a completely separate toolchain from devkitPro. This requires a different container approach but follows similar principles: extend official base images and install all available packages for a complete development environment.
**Key Differences from devkitPro**:
- Separate ecosystem with its own toolchain (vita-toolchain)
- Different package manager: `vdpm` (shell-based) instead of `dkp-pacman`
- Different build system: CMake with Vita-specific macros
- Official Docker images: `vitasdk/vitasdk` (not on devkitPro organization)
- Output formats: SELF (executable), VPK (installable package archive)
---
## PS Vita Platform Capabilities
### Hardware Features
- **Networking**: ✅ Built-in Wi-Fi (802.11 b/g/n)
- Optional 3G modem (discontinued in 2013, limited availability)
- Bluetooth 2.1+EDR
- **Screenshots**: ✅ Native system-level screenshot capability
- **Cameras**: ✅ Dual 0.3MP cameras (front and back)
- VGA resolution (640×480 @ 60fps)
- Can capture photos and videos
- **Display**: 5-inch OLED touchscreen (original) or LCD (slim)
- **CPU**: Quad-core ARM Cortex-A9 MPCore
- **GPU**: Quad-core PowerVR SGX543MP4+
- **RAM**: 512 MB system RAM, 128 MB VRAM
### Project Fit Assessment
**Networking**: Yes - Wi-Fi built-in, suitable for Nextcloud uploads
**Screenshots**: Yes - native system capability for game captures
**Cameras**: Yes - can take photos with built-in cameras
**Homebrew Scene**: Active community with VitaSDK
**Container Support**: Official Docker images available
**Priority**: **HIGH** - Meets all requirements (networking + screenshots + cameras)
---
## VitaSDK Ecosystem
### Official Resources
- **Website**: https://vitasdk.org/
- **GitHub Organization**: https://github.com/vitasdk (15 repositories)
- **Docker Repository**: https://github.com/vitasdk/docker
- **Package Repository**: https://github.com/vitasdk/packages (updated frequently)
- **Samples Repository**: https://github.com/vitasdk/samples (335 stars)
- **Documentation**: https://docs.vitasdk.org/
### Toolchain Components
- **vita-toolchain**: ARM-based cross-compiler (MIT license)
- **newlib**: PS Vita port of C library (GPL-2.0)
- **vita-headers**: System headers (233 stars, 94 forks)
- **buildscripts**: CMake-based build system (65 stars)
- **taihen**: Plugin framework
- **libvita2d**: 2D graphics library
### Package Management
- **Tool**: vdpm (Vita SDK Package Manager)
- **Type**: Shell-based installer scripts
- **Repository**: https://github.com/vitasdk/packages
- **Installation**: Bootstrap with `./install-all.sh` from vdpm repo
- **Build Format**: vita-makepkg (similar to Arch Linux makepkg)
### Build System
- **Primary**: CMake with Vita-specific macros
- `vita_create_self()` - Creates SELF executable
- `vita_create_vpk()` - Creates VPK package
- **Output Formats**:
- SELF: Signed ELF executable format
- VPK: Installable package archive (SELF + data + metadata)
---
## Official Docker Images
### Available on Docker Hub
```bash
# Search results show multiple official images
docker.io/vitasdk/vitasdk # Main official image
docker.io/vitasdk/vitasdk-softfp # Soft float variant
docker.io/vitasdk/buildscripts # Build tools base image
```
### Base Image Structure
From `github.com/vitasdk/docker`:
**Main Dockerfile**:
- Base: `vitasdk/buildscripts:latest`
- Installs: git, curl, bash, make, pkgconf, cmake, sudo
- Uses multi-stage build to clone and install vdpm
- Installs all packages via `vdpm/install-all.sh`
- Environment: `VITASDK=/usr/local/vitasdk`
**Non-root Dockerfile**:
- Same base, but creates unprivileged user
- Adds sudo access for package installation
- Better for local development (matches host UID)
---
## Container Strategy
### Approach
Unlike devkitPro platforms, VitaSDK already provides comprehensive official images with all packages pre-installed. Our strategy should be:
**Option 1: Use Official Images Directly** (Recommended)
- Use `vitasdk/vitasdk:latest` as-is
- No custom Dockerfile needed
- Pull official image when needed
- Simplest approach, maintained by VitaSDK team
**Option 2: Extend Official Images** (If customization needed)
- Base: `FROM vitasdk/vitasdk:latest`
- Add project-specific tools or scripts
- Pin to specific tag for reproducibility
- Only if we need additional packages
### Tagging Strategy
If we publish custom images:
- Format: `tomusan/vitasdk-vita:<date>` or `tomusan/vitasdk-vita:<date>-v<semver>`
- Example: `tomusan/vitasdk-vita:20251231` or `tomusan/vitasdk-vita:20251231-v1.0.0`
- Follow same conventions as devkitPro containers
---
## Package Ecosystem Research
### Known Libraries (from vdpm)
- **zlib**: Compression library
- **freetype**: Font rendering
- **libvita2d**: 2D graphics library (Vita-specific)
- **taihen**: Plugin framework (Vita-specific)
### Additional Research Needed
- [ ] Query vdpm package list for available networking libraries
- [ ] Check for curl, libcurl support
- [ ] Verify SSL/TLS libraries (mbedtls, openssl, etc.)
- [ ] Check for image format libraries (PNG, JPEG)
- [ ] Verify XML/JSON parsing libraries
- [ ] Document complete package list similar to devkitPro research
### How to Query Packages
```bash
# Run official container and list packages
podman run --rm vitasdk/vitasdk:latest bash -c "cd /usr/local/vitasdk && find . -name '*.a' -o -name '*.so'"
# Or check vdpm repository
# Clone https://github.com/vitasdk/packages and inspect package definitions
```
---
## Hardware Requirements
### Hacked Console Required
PS Vita homebrew requires modified firmware:
- **HENkaku**: Firmware 3.60
- **h-encore**: Firmware 3.65-3.68
- **Trinity**: Firmware 3.69-3.70
This is similar to 3DS requiring custom firmware (CFW). Not a blocker for development, but users need hacked consoles to run homebrew.
---
## Implementation Plan
### Phase 1: Research & Validation
- [ ] Test official `vitasdk/vitasdk` image locally
- [ ] Create simple "Hello World" program
- [ ] Build VPK package and test on hardware/emulator
- [ ] Document build process
- [ ] Query complete package list from vdpm
- [ ] Verify networking library availability (curl, SSL/TLS)
### Phase 2: Integration Planning
- [ ] Determine if custom Dockerfile is needed (likely not)
- [ ] Create build scripts for Vita platform
- `scripts/build-vita.sh` - Build project using container
- `scripts/container-shell-vita.sh` - Interactive development shell
- [ ] Update main `scripts/build-container.sh` to handle VitaSDK
- [ ] Document Vita-specific build flags and configuration
### Phase 3: Project Integration
- [ ] Create Vita source directory structure
- [ ] Implement Nextcloud client for Vita
- [ ] Test screenshot upload functionality
- [ ] Test camera photo upload functionality
- [ ] Integrate with main project build system
---
## Platform Priority Assessment
**Priority: HIGH**
Justification:
- ✅ Full networking support (Wi-Fi built-in)
- ✅ Native screenshot capability for game captures
- ✅ Dual cameras for photo capture
- ✅ Active homebrew community and toolchain
- ✅ Official Docker images available
- ✅ Similar form factor to 3DS (handheld gaming device)
- ✅ Fits project goals perfectly
**Recommendation**: Add PS Vita alongside 3DS, Switch, and Wii U as HIGH priority platform.
---
## Differences from devkitPro Platforms
| Aspect | devkitPro | VitaSDK |
|--------|-----------|---------|
| **Organization** | devkitPro | vita-dev (separate) |
| **Toolchain** | devkitARM/A64/PPC | vita-toolchain (ARM) |
| **Package Manager** | dkp-pacman (Arch-style) | vdpm (shell scripts) |
| **Build System** | Native makefiles + CMake | CMake with Vita macros |
| **Docker Hub** | devkitpro/* | vitasdk/* |
| **Package Format** | .pkg.tar.xz | vita-makepkg scripts |
| **Output Format** | .elf, .nro, .rpx | .self, .vpk |
| **Install Path** | /opt/devkitpro | /usr/local/vitasdk |
---
## Container Usage Examples
### Using Official Image Directly
```bash
# Pull official image
podman pull vitasdk/vitasdk:latest
# Build project
podman run --rm -v .:/project:z -w /project/vita \
vitasdk/vitasdk:latest \
cmake -B build && cmake --build build
# Interactive shell for development
podman run --rm -it -v .:/project:z -w /project \
vitasdk/vitasdk:latest \
bash
```
### If Custom Image Needed
```dockerfile
# vita.Dockerfile
FROM vitasdk/vitasdk:latest
# Add any project-specific tools
RUN apk add --no-cache \
vim \
tree \
htop
# Set working directory
WORKDIR /project
```
---
## Community & Support
### Official Channels
- **Discord**: Active VitaSDK community server
- **Matrix**: Bridge to Discord
- **IRC**: #vitasdk on libera.chat
- **Forums**: Various homebrew forums
### Related Projects
- **VitaShell**: File manager (reference for file operations)
- **Adrenaline**: PSP emulator (advanced homebrew example)
- **RetroArch**: Multi-emulator (networking reference)
- Various homebrew games and apps using VitaSDK
---
## Hardware Specifications
| Component | Specification |
|-----------|---------------|
| **CPU** | Quad-core ARM Cortex-A9 MPCore |
| **GPU** | Quad-core PowerVR SGX543MP4+ |
| **RAM** | 512 MB + 128 MB VRAM |
| **Display** | 5" OLED/LCD touchscreen, 960×544 (qHD) |
| **Storage** | Proprietary memory cards (4-64 GB) |
| **Cameras** | Front/back 0.3MP (VGA @ 60fps) |
| **Connectivity** | Wi-Fi b/g/n, Bluetooth 2.1+EDR, (3G optional) |
| **Battery** | 2210 mAh (3-5 hours gameplay) |
| **Input** | Touchscreen, rear touchpad, dual analog sticks, buttons, Sixaxis motion |
---
## References
### Official Documentation
- [VitaSDK Website](https://vitasdk.org/) - Main landing page
- [VitaSDK GitHub](https://github.com/vitasdk) - Organization with all repos
- [VitaSDK Docker](https://github.com/vitasdk/docker) - Official Dockerfile source
- [VitaSDK Packages](https://github.com/vitasdk/packages) - Available libraries
- [VitaSDK Samples](https://github.com/vitasdk/samples) - Example code
- [VitaSDK Documentation](https://docs.vitasdk.org/) - API reference
### Docker Images
- [Docker Hub - vitasdk/vitasdk](https://hub.docker.com/r/vitasdk/vitasdk)
- [Docker Hub - vitasdk/buildscripts](https://hub.docker.com/r/vitasdk/buildscripts)
### Hardware Information
- [PlayStation Vita - Wikipedia](https://en.wikipedia.org/wiki/PlayStation_Vita) - Comprehensive hardware specs
- [PS Vita Dev Wiki](https://wiki.henkaku.xyz/) - Homebrew development wiki
### Community Resources
- VitaSDK Discord Server - Active developer community
- [/r/vitahacks](https://reddit.com/r/vitahacks) - Reddit community
---
## Next Steps
When ready to implement PS Vita support:
1. **Test Official Image**:
```bash
podman pull vitasdk/vitasdk:latest
podman run --rm -it vitasdk/vitasdk:latest bash
```
2. **Create Hello World**:
- Simple CMakeLists.txt
- Basic main.c with vita2d graphics
- Build VPK package
3. **Research Networking Libraries**:
- Query vdpm for available packages
- Test curl/libcurl availability
- Verify SSL/TLS support
4. **Determine Custom Dockerfile Need**:
- If official image has everything → use directly
- If missing tools → create custom Dockerfile extending official image
5. **Update Main Plan**:
- Add PS Vita to DockerForDevkitARM.md platform summary
- Note it uses separate VitaSDK ecosystem
- Include in Phase 3 implementation alongside Wii U
---
## Notes
- VitaSDK is completely independent from devkitPro - different organization, different toolchain
- Official images already include most/all packages via vdpm install-all
- May not need custom Dockerfile at all - official image might be sufficient
- PS Vita was discontinued in 2019, but homebrew scene remains active
- Estimated 15-16 million units sold worldwide (smaller than 3DS but larger than Wii U)
- Active indie game development continues as of 2026