8
0
Fork
You've already forked pEpForiOS-build
0
Build p≡p for iOS
Find a file
2026年04月01日 16:28:20 +02:00
.gitignore
.submodules.json Update pEpForiOS.XCFrameworks 2026年04月01日 16:27:40 +02:00
LICENSE
README.md Link to internal 2026年04月01日 15:02:37 +02:00

pEpForiOS-build

Build the latest p≡p for iOS.

Dependencies

There are many dependencies, encoded in .submodules.json. Please note that this is recursive, at this stage pEpForiOS.XCFrameworks uses the same dependency management.

Following the .submodules.json file, you can checkout all dependencies manually, like this:

cd pEpForiOS-build # or wherever you cloned to
git clone ssh://git@codeberg.org/pEp/pEpForiOS.git
git clone https://github.com/SwipeCellKit/SwipeCellKit.git
...
pushd pEpForiOS.XCFrameworks
git clone https://github.com/randombit/botan.git
...
popd

You may also want to follow the commits as indicated in .submodules.json, that is, check out the stated commit for each submodule.

Alternatively, use this tool for automating these tasks.

Bootstrap

If you have just checked out this repository, and want to have p≡p for iOS up and running as fast as possible, execute the following commands.

If you run into errors, please read the rest of this README and pEpForiOS.XCFrameworks for information about build dependencies you may have to install first.

cd pEpForiOS-build # or wherever you cloned to
# Make sure you have recursively cloned all dependencies and brought them to their supported version,
# as described in the previous section about dependencies.
pushd pEpForiOS.XCFrameworks
caffeinate zig build run
popd
open pEpForiOS/pEpForiOS.xcworkspace/

Make sure your target is "pEp", chose a device or a simulator, and you should be good to go. Debug, run the tests, etc.

Development

If you change code in one of the projects built by pEpForiOS.XCFrameworks, you have to rebuild that framework, before starting the build in Xcode:

pushd pEpForiOS.XCFrameworks
rm -fr prefix/<project_with_changes>
caffeinate zig build run
popd

The big exception is the pEpEngine, it's only built as an xcframework to satisfy build-time linkage requirements of the other xcframeworks. When used with Xcode, the actual libpEpEngine.a is rebuilt as needed (taking latest code changes there into account), and it is this version that ends up in the final product.

Internal Projects

There is a separate project containing all secrets, including the possibility to test against specified test servers.

It is referenced as pEpForiOS-intern/, that is, relative to this project.

It contains:

  • A file pEpForiOS-intern/secret.xcconfig that is included in pEpForiOS as /pEpForiOS/Resources/public.xcconfig containing OAUTH tokens.

  • A file pEpForiOS-intern/SecretTestData.swift where you can override test servers. Please see TestDataBase.swift in pEpForiOS for details.

  • A framework in pEpForiOS-intern/pEp4iosIntern/pEp4iosIntern.xcodeproj/ that defines constants regarding app identifiers.

Local Testing

You need a running set of local servers when running the tests:

cd pEpForiOS
java -Dgreenmail.setup.test.all -Dgreenmail.users=test001:pwd@localhost,test002:pwd@localhost,test003:pwd@localhost -jar ./testTools/greenmail/greenmail-standalone-1.5.9.jar