Updates all of our bundled CI deps to support android x86_64, adds a build flavor thereof (`chromeOS`), and also adds sirit mingw support. The new FFmpeg package is built in a much better way that actually makes it identically built to the other CI packages, meaning we now have real 8.0.0 support, no need for libvpx/cpu_features/all that other crap. PLUS, we can now statically link it! Hooray! It's also built with MediaCodec support so in the future we can work on that. Rewrote the android build script too, plus added a copyFlavorTypeOutput target that assembles and copies the APK. The code behind it sucks because I'm not great with Gradle but hey, it works. Testers: please test everything related to video decoding. VP9 and h264, games that normally suck with their prerendered stuff, make sure I didn't nuke it to oblivion, etc. Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3086 Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Reviewed-by: Lizzie <lizzie@eden-emu.dev> |
||
|---|---|---|
| .. | ||
| README.md | ||
| check-hash-all.sh | ||
| check-hash.sh | ||
| check-updates-all.sh | ||
| check-updates.sh | ||
| common.sh | ||
| download.sh | ||
| fetch-all.sh | ||
| fetch.sh | ||
| format.sh | ||
| hash.sh | ||
| package.sh | ||
| replace.sh | ||
| url-hash.sh | ||
| which.sh | ||
README.md
CPMUtil Tools
These are supplemental shell scripts for CPMUtil aiming to ease maintenance burden for sanity checking, updates, prefetching, formatting, and standard operations done by these shell scripts, all in one common place.
All scripts are POSIX-compliant. If something doesn't work on your shell, ensure it's POSIX-compliant.
- If your shell doesn't support
$(...)syntax, you've got bigger problems to worry about.
Meta
These scripts are generally reserved for internal use.
common.sh: Grabs all available cpmfiles and aggregates them together.- Outputs:
PACKAGES: The aggregated cpmfileLIBS: The list of individual libraries contained within each cpmfilevalue: A function that grabs a key from theJSONvariable (typically the package key)
- Outputs:
download.sh: Utility script to handle downloading of regular and CI packages.- Generally only used by the fetch scripts.
package.sh: The actual package parser.- Inputs:
PACKAGE: The package key
- Outputs:
- Basically everything. You're best off reading the code rather than me poorly explaining it.
- Inputs:
which.sh: Find which cpmfile a package is located in.- Inputs:
- The package key
- Inputs:
replace.sh: Replace a package's cpmfile definition.- Inputs:
PACKAGE: The package keyNEW_JSON: All keys to replace/add
- Keys not found in the new json are not touched. Keys cannot currently be deleted.
- Inputs:
Simple Utilities
These scripts don't really have any functionality, they just help you out a bit yknow?
format.sh: Format all cpmfiles (4-space indent is enforced)- In the future, these scripts will have options for spacing
hash.sh: Determine the hash of a specific package.- Inputs:
- The repository (e.g. fmtlib/fmt)
- The sha or tag (e.g. v1.0.1)
-g <GIT_HOST>or--host <GIT_HOST>: What git host to use (default github.com)-a <ARTIFACT>or--artifact <ARTIFACT>: The artifact to download. Set to null or empty to use a source archive instead
- Output: the SHA512 sum of the package
- Inputs:
url-hash.sh: Determine the hash of a URL- Input: the URL
- Output: the SHA512 sum of the URL
Functional Utilities
These modify the CPM cache or cpmfiles. Each allows you to input all the packages to act on, as well as a <scriptname>-all.sh that acts upon all available packages.
Beware: if a hash is cf83e1357... that means you got a 404 error!
fetch.sh: Prefetch a package according to its cpmfile definition- Packages are fetched to the
.cache/cpmdirectory by default, following the CPMUtil default. - Already-fetched packages will be skipped. You can invalidate the entire cache with
rm -rf .cache/cpm, or invalidate a specific package with e.g.rm -rf .cache/cpm/packagenameto force a refetch. - In the future, a force option will be added
- Note that full prefetching will take a long time depending on your internet, the amount of dependencies, and the size of each dependency.
- Packages are fetched to the
check-updates.sh: Check a package for available updates- This only applies to packages that utilize tags.
- If the tag is a format string, the
git_versionis acted upon instead. - Specifying
-for--forcewill forcefully update the package and its hash, even if it's on on the latest version. - Alternatively, only specify
-uor--updateto update packages that have new versions available. - This script generally runs fast.
- Packages that should skip updates (e.g. older versions, OR packages with poorly-made tag structures... looking at you mbedtls) may specify
"skip_updates": truein their cpmfile definition. This is unnecessary for untagged (e.g. sha or bare URL) packages.
check-hashes.sh: Check a package's hash- Specifying
-for--forcewill update the package's hash even if it's not mismatched. - Alternatively, specify
-uor--updateto only fix mismatched hashes. - This only applies to packages with hardcoded hashes, NOT ones that use hash URLs.
- This script will take a long time. This is operationally equivalent to a prefetch, and thus checking all hashes will take a while--but it's worth it! Just make sure you're not using dial-up.
- Specifying
You are recommended to run sanity hash checking for every pull request and commit, and weekly update checks.