mirror of
https://github.com/narrrl/proton-stream.git
synced 2026-11-06 17:22:10 +01:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52d27ec996 | ||
|
|
66eb1b49a1 | ||
|
|
22425e0bad |
No files matched your search
@@ -107,19 +107,34 @@ jobs:
|
||||
"build-tools;${ANDROID_BUILD_TOOLS}"
|
||||
"ndk;${ANDROID_NDK}"
|
||||
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- id: toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: '1.96'
|
||||
targets: aarch64-linux-android,x86_64-linux-android
|
||||
|
||||
# One cache for both jobs: the signed build compiles the same crates for
|
||||
# the same targets. Saved on failure too, so a run that breaks late does
|
||||
# not throw away everything it compiled before the break.
|
||||
# The registry and the installed helpers only. rust-cache reads
|
||||
# `target/android/<triple>` as a profile directory and deletes the
|
||||
# `release` tree under it before saving, so with its target caching on
|
||||
# every run rebuilt both ABIs from scratch.
|
||||
- uses: Swatinem/rust-cache@v2.9.1
|
||||
with:
|
||||
shared-key: android
|
||||
shared-key: android-registry
|
||||
cache-targets: false
|
||||
cache-on-failure: true
|
||||
|
||||
# The target directory as is: the host build the UniFFI bindings come
|
||||
# from and both cargo-ndk ABIs. One entry for both jobs, since the signed
|
||||
# build compiles the same crates for the same targets. A new lockfile
|
||||
# starts from the last one's tree, so a version bump rebuilds only the
|
||||
# workspace crates.
|
||||
- id: target
|
||||
uses: actions/cache/restore@v6
|
||||
with:
|
||||
path: target
|
||||
key: rust-target-android-${{ steps.toolchain.outputs.cachekey }}-${{ hashFiles('Cargo.lock') }}
|
||||
restore-keys: rust-target-android-${{ steps.toolchain.outputs.cachekey }}-
|
||||
|
||||
# libmpv and its dependency tree are the slowest part of the build, and
|
||||
# depend only on the pinned revision and the build script, which stamps
|
||||
# its output with both and skips the build when the stamp matches. Built
|
||||
@@ -167,6 +182,12 @@ jobs:
|
||||
- name: Android checks and artifacts
|
||||
run: bash scripts/build-android.sh all
|
||||
|
||||
- if: steps.target.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v6
|
||||
with:
|
||||
path: target
|
||||
key: ${{ steps.target.outputs.cache-primary-key }}
|
||||
|
||||
signed-release:
|
||||
name: Signed release
|
||||
if: startsWith(github.ref, 'refs/tags/v') || inputs.signed_release
|
||||
@@ -209,19 +230,34 @@ jobs:
|
||||
"build-tools;${ANDROID_BUILD_TOOLS}"
|
||||
"ndk;${ANDROID_NDK}"
|
||||
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- id: toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: '1.96'
|
||||
targets: aarch64-linux-android,x86_64-linux-android
|
||||
|
||||
# One cache for both jobs: the signed build compiles the same crates for
|
||||
# the same targets. Saved on failure too, so a run that breaks late does
|
||||
# not throw away everything it compiled before the break.
|
||||
# The registry and the installed helpers only. rust-cache reads
|
||||
# `target/android/<triple>` as a profile directory and deletes the
|
||||
# `release` tree under it before saving, so with its target caching on
|
||||
# every run rebuilt both ABIs from scratch.
|
||||
- uses: Swatinem/rust-cache@v2.9.1
|
||||
with:
|
||||
shared-key: android
|
||||
shared-key: android-registry
|
||||
cache-targets: false
|
||||
cache-on-failure: true
|
||||
|
||||
# The target directory as is: the host build the UniFFI bindings come
|
||||
# from and both cargo-ndk ABIs. One entry for both jobs, since the signed
|
||||
# build compiles the same crates for the same targets. A new lockfile
|
||||
# starts from the last one's tree, so a version bump rebuilds only the
|
||||
# workspace crates.
|
||||
- id: target
|
||||
uses: actions/cache/restore@v6
|
||||
with:
|
||||
path: target
|
||||
key: rust-target-android-${{ steps.toolchain.outputs.cachekey }}-${{ hashFiles('Cargo.lock') }}
|
||||
restore-keys: rust-target-android-${{ steps.toolchain.outputs.cachekey }}-
|
||||
|
||||
# libmpv and its dependency tree are the slowest part of the build, and
|
||||
# depend only on the pinned revision and the build script, which stamps
|
||||
# its output with both and skips the build when the stamp matches. Built
|
||||
@@ -266,6 +302,12 @@ jobs:
|
||||
- name: Build signed APK and AAB
|
||||
run: bash scripts/build-android.sh signed
|
||||
|
||||
- if: steps.target.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v6
|
||||
with:
|
||||
path: target
|
||||
key: ${{ steps.target.outputs.cache-primary-key }}
|
||||
|
||||
# The APK bundles a GPL libmpv, so its corresponding source ships next to
|
||||
# it. The AAB is for Play only and stays out of the GitHub release.
|
||||
- name: Stage release files
|
||||
|
||||
Generated
+7
-7
@@ -4359,7 +4359,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pstr-android"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
dependencies = [
|
||||
"android_logger",
|
||||
"jni 0.21.1",
|
||||
@@ -4378,7 +4378,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pstr-app"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -4409,7 +4409,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pstr-cli"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
@@ -4427,7 +4427,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pstr-core"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
dependencies = [
|
||||
"directories",
|
||||
"futures",
|
||||
@@ -4445,7 +4445,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pstr-meta"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
dependencies = [
|
||||
"pstr-core",
|
||||
"reqwest",
|
||||
@@ -4458,7 +4458,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pstr-player"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"libloading",
|
||||
@@ -4473,7 +4473,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pstr-stream"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"futures",
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ members = [
|
||||
]
|
||||
|
||||
[workspace.package]
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://github.com/narrrl/proton-stream"
|
||||
|
||||
@@ -180,20 +180,16 @@ val uniffiSourceDir = layout.buildDirectory.dir("generated/source/uniffi")
|
||||
val hostRustLibrary = repositoryRoot.resolve(
|
||||
"target/debug/${System.mapLibraryName("pstr_android")}",
|
||||
)
|
||||
val stagedMpvDir = layout.buildDirectory.dir("generated/mpv")
|
||||
|
||||
val buildLibmpvAndroid by tasks.registering(Exec::class) {
|
||||
group = "native"
|
||||
description = "Builds the pinned GPL libmpv and stages both Android ABIs."
|
||||
workingDir(repositoryRoot)
|
||||
commandLine("bash", repositoryRoot.resolve("scripts/build-libmpv-android.sh").absolutePath)
|
||||
inputs.file(repositoryRoot.resolve("scripts/build-libmpv-android.sh"))
|
||||
outputs.files(
|
||||
stagedMpvDir.map { it.file("jniLibs/arm64-v8a/libmpv.so") },
|
||||
stagedMpvDir.map { it.file("jniLibs/x86_64/libmpv.so") },
|
||||
stagedMpvDir.map { it.file("include/mpv/client.h") },
|
||||
stagedMpvDir.map { it.file("REVISION") },
|
||||
)
|
||||
// No declared outputs: the script's STAMP is the up-to-date check. Gradle
|
||||
// deletes the declared outputs of a task it has no history for, which on a
|
||||
// fresh CI checkout threw away the tree just restored from the cache and
|
||||
// rebuilt libmpv from source on every run.
|
||||
}
|
||||
|
||||
val buildRustHost by tasks.registering(Exec::class) {
|
||||
|
||||
@@ -2,15 +2,17 @@
|
||||
The play mark from packaging/io.narl.proton-stream.svg, cut into the blocks a
|
||||
revision is fetched in. The paths are in the SVG's 128-unit space; the group
|
||||
maps its 104-unit tile onto the 72dp a launcher shows of a 108dp layer.
|
||||
It centres x=70, between the glyph's centroid (66) and its box (73): the
|
||||
SVG's own centre, 64, leaves it sitting visibly right in a round mask.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp" android:height="108dp"
|
||||
android:viewportWidth="108" android:viewportHeight="108">
|
||||
<group
|
||||
android:pivotX="64" android:pivotY="62"
|
||||
android:pivotX="70" android:pivotY="62"
|
||||
android:scaleX="0.6923" android:scaleY="0.6923"
|
||||
android:translateX="-10" android:translateY="-8">
|
||||
android:translateX="-16" android:translateY="-8">
|
||||
<group android:translateY="3">
|
||||
<clip-path android:pathData="M0,0h63v128h-63zM68.5,0h10v128h-10zM84,0h44v128h-44z" />
|
||||
<path android:fillColor="#4D2E1596" android:pathData="M50,41.5v41a6,6 0,0 0,9.1 5.1l34.2,-20.5a6,6 0,0 0,0 -10.3L59.1,36.4A6,6 0,0 0,50 41.5z" />
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
android:width="108dp" android:height="108dp"
|
||||
android:viewportWidth="108" android:viewportHeight="108">
|
||||
<group
|
||||
android:pivotX="64" android:pivotY="62"
|
||||
android:pivotX="70" android:pivotY="62"
|
||||
android:scaleX="0.6923" android:scaleY="0.6923"
|
||||
android:translateX="-10" android:translateY="-8">
|
||||
android:translateX="-16" android:translateY="-8">
|
||||
<clip-path android:pathData="M0,0h63v128h-63zM68.5,0h10v128h-10zM84,0h44v128h-44z" />
|
||||
<path android:fillColor="#FFFFFFFF" android:pathData="M50,41.5v41a6,6 0,0 0,9.1 5.1l34.2,-20.5a6,6 0,0 0,0 -10.3L59.1,36.4A6,6 0,0 0,50 41.5z" />
|
||||
</group>
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
# builds from the registry alone.
|
||||
|
||||
pkgname=proton-stream
|
||||
pkgver=1.0.0
|
||||
pkgver=1.0.1
|
||||
pkgrel=1
|
||||
pkgdesc="Netflix-style desktop client for Proton Drive public links: browse and stream a share"
|
||||
arch=('x86_64')
|
||||
|
||||
Reference in new issue
Block a user