Update docs and comments for jpeglib migration (v4.2.0)
- Replace jpegio references with jpeglib in comments/docstrings - Update sanitize-for-image.sh to use system Python 3.11+ (no pyenv) - Update rpi/patches/README.md for jpeglib world - Add AUR build artifacts to .gitignore Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,56 +2,39 @@
|
||||
|
||||
This directory contains patches for dependencies that need modifications to build on ARM64.
|
||||
|
||||
## Current Status (v4.2+)
|
||||
|
||||
As of Stegasoo 4.2, we use **jpeglib** instead of jpegio. The jpeglib build process is handled inline in `setup.sh` and includes:
|
||||
|
||||
- Cloning from GitHub (PyPI tarball missing headers)
|
||||
- Downloading libjpeg headers for each version (6b through 9f)
|
||||
- Patching setup.py to skip turbo/mozjpeg (need cmake-generated headers)
|
||||
|
||||
See `setup.sh` for the full implementation.
|
||||
|
||||
## Legacy: jpegio Patches (v4.1 and earlier)
|
||||
|
||||
The `jpegio/` directory contains patches for the old jpegio dependency, which required removing x86-specific `-m64` compiler flags. These are no longer used but kept for reference.
|
||||
|
||||
## jpeglib Helper Script
|
||||
|
||||
The `jpeglib/install-jpeglib-arm64.sh` script is a standalone version of the jpeglib build process. It's not used by setup.sh (which has the logic inline) but can be useful for manual testing or debugging.
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
patches/
|
||||
<package>/
|
||||
arm64.patch # Standard unified diff patch file
|
||||
apply-patch.sh # Script with fallback strategies
|
||||
jpegio/ # Legacy (v4.1) - not used in v4.2+
|
||||
arm64.patch
|
||||
apply-patch.sh
|
||||
jpeglib/ # Reference script for manual builds
|
||||
install-jpeglib-arm64.sh
|
||||
```
|
||||
|
||||
## How It Works
|
||||
## Adding New Patches
|
||||
|
||||
The `apply-patch.sh` script tries multiple strategies in order:
|
||||
|
||||
1. **Patch file** - Apply the `.patch` file using `patch -p1`
|
||||
2. **Sed fallback** - Use sed for simple string replacements
|
||||
3. **Python fallback** - Use regex for flexible pattern matching
|
||||
|
||||
This layered approach handles:
|
||||
- Exact matches (patch file works)
|
||||
- Minor upstream changes (sed catches variations)
|
||||
- Significant changes (Python regex is most flexible)
|
||||
- Already patched files (detected and skipped)
|
||||
|
||||
## Adding a New Patch
|
||||
If a new dependency needs ARM64 patches:
|
||||
|
||||
1. Create a directory: `patches/<package>/`
|
||||
2. Create the patch file: `git diff > arm64.patch`
|
||||
3. Create `apply-patch.sh` with appropriate fallback logic
|
||||
4. Update `setup.sh` to call the patch script
|
||||
|
||||
## jpegio Patch
|
||||
|
||||
The jpegio library includes x86-specific `-m64` compiler flags that fail on ARM64.
|
||||
The patch removes these flags by replacing:
|
||||
|
||||
```python
|
||||
cargs.append('-m64')
|
||||
```
|
||||
|
||||
with:
|
||||
|
||||
```python
|
||||
pass # ARM64: removed x86-specific -m64 flag
|
||||
```
|
||||
|
||||
## Updating Patches
|
||||
|
||||
When upstream changes break a patch:
|
||||
|
||||
1. Clone the new version
|
||||
2. Make the necessary modifications
|
||||
3. Generate a new patch: `diff -u original modified > arm64.patch`
|
||||
4. Test on a fresh Pi install
|
||||
2. Add patch files or helper scripts
|
||||
3. Update `setup.sh` to apply the patch during installation
|
||||
|
||||
Reference in New Issue
Block a user