-
Notifications
You must be signed in to change notification settings - Fork 0
tech(#1): implementing a dockerfile that builds the package #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tech(#1): implementing a dockerfile that builds the package #2
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements a Docker-based build system for the WebMessage iOS jailbreak tweak, enabling cross-platform compilation of .deb packages without requiring a macOS environment or local Theos installation.
Key Changes:
- Adds comprehensive Docker build infrastructure with Ubuntu 22.04, Theos framework, iOS SDK 13.7, and clang 10 toolchain
- Implements automated CI/CD pipeline via GitHub Actions with artifact publishing and release automation
- Updates project documentation to reflect new Docker-first build process
Reviewed changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| Dockerfile | Defines multi-stage build environment with Theos, iOS toolchain, MRYIPC dependency, and embedded build script |
| build-docker.sh | Provides user-facing script to orchestrate Docker image building, container execution, and .deb extraction |
| .github/workflows/build.yml | Implements CI/CD pipeline for automated builds on push/PR with artifact upload and release creation |
| README.md | Rewrites documentation to focus on Docker build process, requirements, and installation instructions |
| .dockerignore | Excludes unnecessary files from Docker build context (IDE files, build artifacts, git metadata) |
| .gitignore | Adds output/WebMessage.deb to ignored files |
| libwebmessage/Makefile | Adds c++ library linking configuration for the tweak |
Critical Issues Found:
The README.md file has severe formatting corruption where text from multiple sections has been incorrectly merged together, making large portions of the documentation unreadable. This appears to be the result of an incomplete merge or text manipulation error and requires immediate attention before merging.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - Docker installed ([Get Docker](https://docs.docker.com/get-docker/)) Sending attachments from your computer without needing to transfer it to your phone | ||
|
|
||
| - ~2GB free disk space Native notifications |
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These lines have severely corrupted content where text from different sections has been merged together. Line 27 incorrectly merges Docker documentation with "Sending attachments from your computer without needing to transfer it to your phone". Line 29 merges disk space requirement with "Native notifications". This makes the documentation unreadable and needs to be properly separated into distinct sections.
| - iOS 12.0 or later (tested on iOS 14.8.1 and 15.1)If you have Theos installed locally: | ||
|
|
||
| - Jailbroken (any jailbreak: checkra1n, unc0ver, Taurine, etc.) | ||
|
|
||
| - Dependencies (auto-installed):```bash | ||
|
|
||
| - `com.muirey03.libmryipc` (available on default repos)./build.sh | ||
|
|
||
| - `mobilesubstrate```` | ||
|
|
||
| - `preferenceloader` | ||
|
|
||
| - `openssl`Requirements: |
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These lines have text merged together incorrectly. Line 79 combines "- iOS 12.0 or later (tested on iOS 14.8.1 and 15.1)If you have Theos installed locally:", line 83 merges "- Dependencies (auto-installed):```bash", line 85 merges "- com.muirey03.libmryipc (available on default repos)./build.sh", and line 87 merges "- `mobilesubstrate````". This section needs to be properly separated into distinct requirements and native build instructions.
| ## CompatibilityThis package uses [Theos](https://theos.dev/) for building the tweak components and [MonkeyDev](https://github.com/AloneMonkey/MonkeyDev/wiki/Installation) for the main binary. | ||
|
|
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line merges two different sections together: "## CompatibilityThis package uses Theos for building the tweak components and [MonkeyDev]". The "Compatibility" header should be on its own line, followed by a separate paragraph about the build environment, or these should be two separate sections.
| ## CompatibilityThis package uses [Theos](https://theos.dev/) for building the tweak components and [MonkeyDev](https://github.com/AloneMonkey/MonkeyDev/wiki/Installation) for the main binary. | |
| ## Compatibility | |
| This package uses [Theos](https://theos.dev/) for building the tweak components and [MonkeyDev](https://github.com/AloneMonkey/MonkeyDev/wiki/Installation) for the main binary. |
| @@ -0,0 +1,167 @@ | |||
| # Dockerfile for building WebMessage Sileo jailbreak tweak | |||
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment refers to "Sileo jailbreak tweak" but Sileo is just one of several package managers that can install .deb packages on jailbroken iOS devices (others include Cydia, Zebra, Installer). The comment should be more generic, such as "WebMessage iOS jailbreak tweak" since the .deb format is not Sileo-specific.
| # Dockerfile for building WebMessage Sileo jailbreak tweak | |
| # Dockerfile for building WebMessage iOS jailbreak tweak |
| # Remove iOS 14+ SDKs that have incompatible TBD format | ||
| rm -rf iPhoneOS14.*.sdk iPhoneOS15.*.sdk iPhoneOS16.*.sdk iPhoneOS17.*.sdk |
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment mentions removing SDKs with "incompatible TBD format" but the wildcard pattern will also remove any future patch versions (e.g., iPhoneOS14.8.sdk). Consider being more specific about which SDK versions are compatible with clang 10, or dynamically keep only iOS 13.x SDKs to make the intention clearer and more maintainable.
| # Remove iOS 14+ SDKs that have incompatible TBD format | |
| rm -rf iPhoneOS14.*.sdk iPhoneOS15.*.sdk iPhoneOS16.*.sdk iPhoneOS17.*.sdk | |
| # Keep only iOS 13.x SDKs (compatible with clang 10); remove all others | |
| find . -maxdepth 1 -type d -name 'iPhoneOS*.sdk' ! -name 'iPhoneOS13.*.sdk' -exec rm -rf {} + |
| ```bash* Always-running daemon | ||
|
|
||
| ./build-docker.sh* Ability to download all attachments through client | ||
|
|
||
| ``` |
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The bash code block is improperly formatted with text from different sections merged together. Line 35 starts with "bash* Always-running daemon", line 37 contains "./build-docker.sh* Ability to download all attachments through client", and line 39 just contains "". This appears to be the result of a merge conflict or incorrect text manipulation that needs to be fixed to properly format the build command section.
| ```bash### Option 1: Docker Build (Recommended for Linux/Cross-platform) | ||
|
|
||
| scp output/WebMessage.deb mobile@YOUR-IPHONE-IP:/tmp/ | ||
|
|
||
| ```The easiest way to build the .deb package on any platform: | ||
|
|
||
|
|
||
|
|
||
| 2. **SSH into your device and install:**```bash | ||
|
|
||
| ```bash./build-docker.sh | ||
|
|
||
| ssh mobile@YOUR-IPHONE-IP``` | ||
|
|
||
| sudo dpkg -i /tmp/WebMessage.deb | ||
|
|
||
| sudo apt-get install -f # Fix dependencies if neededThe built package will be available in the `output/` directory. | ||
|
|
||
| ``` |
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The installation instructions section has severely corrupted formatting with multiple text fragments merged incorrectly. Lines 51-67 mix bash code blocks, section headers, and commands in an unreadable way. For example, line 51 merges "bash### Option 1: Docker Build", line 55 merges "The easiest way to build", and line 59 contains "bash./build-docker.sh". The entire installation section needs to be properly restructured with correct markdown formatting.
| ### Build System Uses:- iOS SDKs from [theos/sdks](https://github.com/theos/sdks) | ||
|
|
||
| - Ubuntu 22.04 in Docker- MRYIPC headers installed in Theos | ||
|
|
||
| - Theos framework- dpkg-deb (install via Homebrew: `brew install dpkg`) | ||
|
|
||
| - iOS 13.7 SDK- ldid (install via Homebrew: `brew install ldid`) | ||
|
|
||
| - Clang 10 cross-compiler for arm64/arm64e | ||
|
|
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These lines have merged text from different sections. Line 95 merges "### Build System Uses:- iOS SDKs from", line 97 merges "- Ubuntu 22.04 in Docker- MRYIPC headers installed in Theos", line 99 merges "- Theos framework- dpkg-deb", and line 101 merges "- iOS 13.7 SDK- ldid". The build system requirements and native build requirements are improperly combined and need to be separated into distinct sections.
| ### Build System Uses:- iOS SDKs from [theos/sdks](https://github.com/theos/sdks) | |
| - Ubuntu 22.04 in Docker- MRYIPC headers installed in Theos | |
| - Theos framework- dpkg-deb (install via Homebrew: `brew install dpkg`) | |
| - iOS 13.7 SDK- ldid (install via Homebrew: `brew install ldid`) | |
| - Clang 10 cross-compiler for arm64/arm64e | |
| ### Docker Build Requirements | |
| - Ubuntu 22.04 (Docker image) | |
| - iOS SDKs from [theos/sdks](https://github.com/theos/sdks) | |
| - Theos framework | |
| - MRYIPC headers installed in Theos | |
| - Clang 10 cross-compiler for arm64/arm64e | |
| ### Native Build Requirements (macOS) | |
| - [Theos](https://theos.dev/docs/installation) installed at `/opt/theos` or `$HOME/theos` | |
| - iOS 13.7 SDK | |
| - dpkg-deb (install via Homebrew: `brew install dpkg`) | |
| - ldid (install via Homebrew: `brew install ldid`) |
| libwebmessage_LDFLAGS = -lc++ | ||
|
|
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The c++ library is added to both LIBRARIES and LDFLAGS. Since specifying it in LIBRARIES should automatically add it to the linker flags, the separate LDFLAGS line appears redundant. Adding "-lc++" in LDFLAGS when "c++" is already in LIBRARIES duplicates the linking specification, which could lead to confusion about which one is actually needed.
| libwebmessage_LDFLAGS = -lc++ |
| ls -lh ${OUTPUT_DIR}/WebMessage.deb | ||
| echo "" | ||
| echo -e "${BLUE}Package info:${NC}" | ||
| dpkg-deb --info ${OUTPUT_DIR}/WebMessage.deb 2>/dev/null || echo "Install dpkg to view package info" |
Copilot
AI
Dec 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The error message "Install dpkg to view package info" could be more helpful by providing specific installation instructions. Consider adding the installation command for common package managers, such as "Install dpkg-deb to view package info: apt-get install dpkg (Debian/Ubuntu) or brew install dpkg (macOS)".
| dpkg-deb --info ${OUTPUT_DIR}/WebMessage.deb 2>/dev/null || echo "Install dpkg to view package info" | |
| dpkg-deb --info ${OUTPUT_DIR}/WebMessage.deb 2>/dev/null || echo -e "dpkg-deb not found. To view package info, install it:\n Debian/Ubuntu: sudo apt-get install dpkg\n macOS: brew install dpkg" |
No description provided.