mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-06-30 11:23:33 +00:00
Update github actions due to nodejs 16 deprecation (#2107)
* Update github actions due to nodejs 16 deprecation - Replace archived actions-rs/clippy-check with maintained fork actions-rs-plus/clippy-check - Replace redhat-actions/push-to-registry with updated fork Eusebiotrigo/push-to-registry - Point redhat-actions/buildah-build and softprops/action-gh-release to current master to fix nodejs deprecation * Build the correct ios core rust arch for CI runs * Build ios app for the same arch as the host in Mobile CI * Some changes to try and make cache-factory faster and avoid failing so much * Add trigger to run cache-factory on pull requests when there are changes to itself * Attempt to fix sed usage on macOS * Don't treat warning as errors * Fix windows * Fix windows 2 * Use target ad cache key for rust to differentiate between macOS x86_64 and arm64 * Use faster/better linkers to compile for macOS, Linux and Windows * Fix missing shell in action * Fix typo * Fix missing shell in action 2 * Fix mold download - Replace bsdtar with plain tar * Fix permission denied when extracting mold * Remove zld * Don't restore cache for rustfmt - Remove target symlink to C:/ in an attempt to speed-up windows CI * Fix typo * Restore target symlink on windows - Removing it didn't make CI faster * Run Mobile on macos-14
This commit is contained in:
parent
519b1b6c46
commit
393a907b57
|
@ -1,3 +1,4 @@
|
||||||
|
{{#nativeDeps}}
|
||||||
[env]
|
[env]
|
||||||
PROTOC = { force = true, value = "{{{protoc}}}" }
|
PROTOC = { force = true, value = "{{{protoc}}}" }
|
||||||
FFMPEG_DIR = { force = true, value = "{{{nativeDeps}}}" }
|
FFMPEG_DIR = { force = true, value = "{{{nativeDeps}}}" }
|
||||||
|
@ -7,17 +8,18 @@ ORT_LIB_LOCATION = { force = true, value = "{{{nativeDeps}}}/lib" }
|
||||||
OPENSSL_STATIC = { force = true, value = "1" }
|
OPENSSL_STATIC = { force = true, value = "1" }
|
||||||
OPENSSL_NO_VENDOR = { force = true, value = "0" }
|
OPENSSL_NO_VENDOR = { force = true, value = "0" }
|
||||||
OPENSSL_RUST_USE_NASM = { force = true, value = "1" }
|
OPENSSL_RUST_USE_NASM = { force = true, value = "1" }
|
||||||
|
{{/nativeDeps}}
|
||||||
|
|
||||||
{{#isMacOS}}
|
{{#isMacOS}}
|
||||||
[target.x86_64-apple-darwin]
|
[target.x86_64-apple-darwin]
|
||||||
rustflags = ["-L", "{{{nativeDeps}}}/lib"]
|
rustflags = ["-L", "{{{nativeDeps}}}/lib", "-Csplit-debuginfo=unpacked"]
|
||||||
|
|
||||||
[target.x86_64-apple-darwin.heif]
|
[target.x86_64-apple-darwin.heif]
|
||||||
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
||||||
rustc-link-lib = ["heif"]
|
rustc-link-lib = ["heif"]
|
||||||
|
|
||||||
[target.aarch64-apple-darwin]
|
[target.aarch64-apple-darwin]
|
||||||
rustflags = ["-L", "{{{nativeDeps}}}/lib"]
|
rustflags = ["-L", "{{{nativeDeps}}}/lib", "-Csplit-debuginfo=unpacked"]
|
||||||
|
|
||||||
[target.aarch64-apple-darwin.heif]
|
[target.aarch64-apple-darwin.heif]
|
||||||
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
||||||
|
@ -26,6 +28,9 @@ rustc-link-lib = ["heif"]
|
||||||
|
|
||||||
{{#isWin}}
|
{{#isWin}}
|
||||||
[target.x86_64-pc-windows-msvc]
|
[target.x86_64-pc-windows-msvc]
|
||||||
|
{{#hasLLD}}
|
||||||
|
linker = "lld-link.exe"
|
||||||
|
{{/hasLLD}}
|
||||||
rustflags = ["-L", "{{{nativeDeps}}}\\lib"]
|
rustflags = ["-L", "{{{nativeDeps}}}\\lib"]
|
||||||
|
|
||||||
[target.x86_64-pc-windows-msvc.heif]
|
[target.x86_64-pc-windows-msvc.heif]
|
||||||
|
@ -35,14 +40,30 @@ rustc-link-lib = ["heif"]
|
||||||
|
|
||||||
{{#isLinux}}
|
{{#isLinux}}
|
||||||
[target.x86_64-unknown-linux-gnu]
|
[target.x86_64-unknown-linux-gnu]
|
||||||
rustflags = ["-L", "{{{nativeDeps}}}/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive"]
|
{{#hasLLD}}
|
||||||
|
linker = "clang"
|
||||||
|
{{/hasLLD}}
|
||||||
|
rustflags = [
|
||||||
|
"-L", "{{{nativeDeps}}}/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive",
|
||||||
|
{{#hasLLD}}
|
||||||
|
"-C", "link-arg=-fuse-ld={{{linker}}}",
|
||||||
|
{{/hasLLD}}
|
||||||
|
]
|
||||||
|
|
||||||
[target.x86_64-unknown-linux-gnu.heif]
|
[target.x86_64-unknown-linux-gnu.heif]
|
||||||
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
||||||
rustc-link-lib = ["heif"]
|
rustc-link-lib = ["heif"]
|
||||||
|
|
||||||
[target.aarch64-unknown-linux-gnu]
|
[target.aarch64-unknown-linux-gnu]
|
||||||
rustflags = ["-L", "{{{nativeDeps}}}/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive"]
|
{{#hasLLD}}
|
||||||
|
linker = "clang"
|
||||||
|
{{/hasLLD}}
|
||||||
|
rustflags = [
|
||||||
|
"-L", "{{{nativeDeps}}}/lib", "-C", "link-arg=-Wl,-rpath=${ORIGIN}/../lib/spacedrive",
|
||||||
|
{{#hasLLD}}
|
||||||
|
"-C", "link-arg=-fuse-ld={{{linker}}}",
|
||||||
|
{{/hasLLD}}
|
||||||
|
]
|
||||||
|
|
||||||
[target.aarch64-unknown-linux-gnu.heif]
|
[target.aarch64-unknown-linux-gnu.heif]
|
||||||
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
rustc-link-search = ["{{{nativeDeps}}}/lib"]
|
||||||
|
|
4
.github/actions/setup-pnpm/action.yml
vendored
4
.github/actions/setup-pnpm/action.yml
vendored
|
@ -9,12 +9,12 @@ runs:
|
||||||
using: 'composite'
|
using: 'composite'
|
||||||
steps:
|
steps:
|
||||||
- name: Install pnpm
|
- name: Install pnpm
|
||||||
uses: pnpm/action-setup@v2
|
uses: pnpm/action-setup@v3
|
||||||
with:
|
with:
|
||||||
version: 8.x.x
|
version: 8.x.x
|
||||||
|
|
||||||
- name: Install Node.js
|
- name: Install Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ inputs.token }}
|
token: ${{ inputs.token }}
|
||||||
check-latest: true
|
check-latest: true
|
||||||
|
|
33
.github/actions/setup-rust/action.yaml
vendored
33
.github/actions/setup-rust/action.yaml
vendored
|
@ -8,6 +8,10 @@ inputs:
|
||||||
description: Whether to save the Rust cache
|
description: Whether to save the Rust cache
|
||||||
required: false
|
required: false
|
||||||
default: 'false'
|
default: 'false'
|
||||||
|
restore-cache:
|
||||||
|
description: Whether to restore the Rust cache
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
runs:
|
runs:
|
||||||
using: 'composite'
|
using: 'composite'
|
||||||
steps:
|
steps:
|
||||||
|
@ -20,8 +24,10 @@ runs:
|
||||||
components: clippy, rustfmt
|
components: clippy, rustfmt
|
||||||
|
|
||||||
- name: Cache Rust Dependencies
|
- name: Cache Rust Dependencies
|
||||||
|
if: ${{ inputs.restore-cache == 'true' }}
|
||||||
uses: Swatinem/rust-cache@v2
|
uses: Swatinem/rust-cache@v2
|
||||||
with:
|
with:
|
||||||
|
key: ${{ inputs.target }}
|
||||||
save-if: ${{ inputs.save-cache }}
|
save-if: ${{ inputs.save-cache }}
|
||||||
shared-key: stable-cache
|
shared-key: stable-cache
|
||||||
|
|
||||||
|
@ -29,9 +35,30 @@ runs:
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo '{}' | npx -y mustache - .cargo/config.toml.mustache .cargo/config.toml
|
run: echo '{}' | npx -y mustache - .cargo/config.toml.mustache .cargo/config.toml
|
||||||
|
|
||||||
|
- name: Turn Off Debuginfo and bump opt-level
|
||||||
|
shell: bash
|
||||||
|
if: ${{ runner.os != 'Windows' }}
|
||||||
|
run: |
|
||||||
|
sed '/\[profile.dev]/a\
|
||||||
|
debug = 0
|
||||||
|
' Cargo.toml > Cargo.toml.tmp && mv Cargo.toml.tmp Cargo.toml
|
||||||
|
|
||||||
|
sed '/\[profile.dev]/a\
|
||||||
|
opt-level=1
|
||||||
|
' Cargo.toml > Cargo.toml.tmp && mv Cargo.toml.tmp Cargo.toml
|
||||||
|
|
||||||
|
- name: Turn Off Debuginfo and bump opt-level
|
||||||
|
if: ${{ runner.os == 'Windows' }}
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
(Get-Content Cargo.toml) -replace '\[profile.dev\]', '[profile.dev]
|
||||||
|
debug = 0' | Set-Content Cargo.toml
|
||||||
|
(Get-Content Cargo.toml) -replace '\[profile.dev\]', '[profile.dev]
|
||||||
|
opt-level=1' | Set-Content Cargo.toml
|
||||||
|
|
||||||
- name: Restore cached Prisma codegen
|
- name: Restore cached Prisma codegen
|
||||||
id: cache-prisma-restore
|
id: cache-prisma-restore
|
||||||
uses: actions/cache/restore@v3
|
uses: actions/cache/restore@v4
|
||||||
with:
|
with:
|
||||||
key: prisma-1-${{ runner.os }}-${{ hashFiles('./core/prisma/*', './crates/sync-generator/*', './Cargo.*') }}
|
key: prisma-1-${{ runner.os }}-${{ hashFiles('./core/prisma/*', './crates/sync-generator/*', './Cargo.*') }}
|
||||||
path: crates/prisma/src/**/*.rs
|
path: crates/prisma/src/**/*.rs
|
||||||
|
@ -44,8 +71,8 @@ runs:
|
||||||
|
|
||||||
- name: Save Prisma codegen
|
- name: Save Prisma codegen
|
||||||
id: cache-prisma-save
|
id: cache-prisma-save
|
||||||
if: ${{ inputs.save-cache == 'true' }}
|
if: ${{ steps.cache-prisma-restore.outputs.cache-hit != 'true' }}
|
||||||
uses: actions/cache/save@v3
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
key: ${{ steps.cache-prisma-restore.outputs.cache-primary-key }}
|
key: ${{ steps.cache-prisma-restore.outputs.cache-primary-key }}
|
||||||
path: crates/prisma/src/**/*.rs
|
path: crates/prisma/src/**/*.rs
|
||||||
|
|
11
.github/actions/setup-system/action.yml
vendored
11
.github/actions/setup-system/action.yml
vendored
|
@ -22,7 +22,7 @@ runs:
|
||||||
- name: Restore cached LLVM and Clang
|
- name: Restore cached LLVM and Clang
|
||||||
if: ${{ runner.os == 'Windows' }}
|
if: ${{ runner.os == 'Windows' }}
|
||||||
id: cache-llvm-restore
|
id: cache-llvm-restore
|
||||||
uses: actions/cache/restore@v3
|
uses: actions/cache/restore@v4
|
||||||
with:
|
with:
|
||||||
key: llvm-15
|
key: llvm-15
|
||||||
path: C:/Program Files/LLVM
|
path: C:/Program Files/LLVM
|
||||||
|
@ -37,7 +37,7 @@ runs:
|
||||||
- name: Save LLVM and Clang
|
- name: Save LLVM and Clang
|
||||||
if: ${{ runner.os == 'Windows' && inputs.save-cache == 'true' }}
|
if: ${{ runner.os == 'Windows' && inputs.save-cache == 'true' }}
|
||||||
id: cache-llvm-save
|
id: cache-llvm-save
|
||||||
uses: actions/cache/save@v3
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
key: ${{ steps.cache-llvm-restore.outputs.cache-primary-key }}
|
key: ${{ steps.cache-llvm-restore.outputs.cache-primary-key }}
|
||||||
path: C:/Program Files/LLVM
|
path: C:/Program Files/LLVM
|
||||||
|
@ -46,6 +46,13 @@ runs:
|
||||||
if: ${{ runner.os != 'Linux' }}
|
if: ${{ runner.os != 'Linux' }}
|
||||||
uses: ilammy/setup-nasm@v1
|
uses: ilammy/setup-nasm@v1
|
||||||
|
|
||||||
|
- name: Install Mold
|
||||||
|
shell: bash
|
||||||
|
if: ${{ runner.os == 'Linux' }}
|
||||||
|
run: |
|
||||||
|
curl -L# 'https://github.com/rui314/mold/releases/download/v2.4.0/mold-2.4.0-x86_64-linux.tar.gz' \
|
||||||
|
| sudo tar -xzf- -C /usr/local
|
||||||
|
|
||||||
- name: Setup Rust and Dependencies
|
- name: Setup Rust and Dependencies
|
||||||
uses: ./.github/actions/setup-rust
|
uses: ./.github/actions/setup-rust
|
||||||
with:
|
with:
|
||||||
|
|
32
.github/workflows/cache-factory.yaml
vendored
32
.github/workflows/cache-factory.yaml
vendored
|
@ -9,12 +9,23 @@ on:
|
||||||
- main
|
- main
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 0 * * *'
|
- cron: '0 0 * * *'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '.github/workflows/cache-factory.yaml'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
# Cancel previous runs of the same workflow on the same branch.
|
# Cancel previous runs of the same workflow on the same branch.
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
# From: https://github.com/rust-lang/rust-analyzer/blob/master/.github/workflows/ci.yaml
|
||||||
|
env:
|
||||||
|
CARGO_INCREMENTAL: 0
|
||||||
|
CARGO_NET_RETRY: 10
|
||||||
|
RUST_BACKTRACE: short
|
||||||
|
RUSTUP_MAX_RETRIES: 10
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
make_cache:
|
make_cache:
|
||||||
strategy:
|
strategy:
|
||||||
|
@ -53,9 +64,6 @@ jobs:
|
||||||
remove-haskell: 'true'
|
remove-haskell: 'true'
|
||||||
remove-docker-images: 'true'
|
remove-docker-images: 'true'
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Symlink target to C:\
|
- name: Symlink target to C:\
|
||||||
if: ${{ runner.os == 'Windows' }}
|
if: ${{ runner.os == 'Windows' }}
|
||||||
shell: powershell
|
shell: powershell
|
||||||
|
@ -63,6 +71,9 @@ jobs:
|
||||||
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
||||||
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup System and Rust
|
- name: Setup System and Rust
|
||||||
uses: ./.github/actions/setup-system
|
uses: ./.github/actions/setup-system
|
||||||
with:
|
with:
|
||||||
|
@ -70,11 +81,18 @@ jobs:
|
||||||
target: ${{ matrix.settings.target }}
|
target: ${{ matrix.settings.target }}
|
||||||
save-cache: 'true'
|
save-cache: 'true'
|
||||||
|
|
||||||
- name: Clippy
|
- name: Compile tests (debug)
|
||||||
run: cargo clippy --workspace --all-features --target ${{ matrix.settings.target }}
|
run: cargo test --workspace --all-features --no-run --locked --target ${{ matrix.settings.target }}
|
||||||
|
|
||||||
|
- name: Compile tests (release)
|
||||||
|
run: cargo test --workspace --all-features --no-run --locked --release --target ${{ matrix.settings.target }}
|
||||||
|
|
||||||
|
# It's faster to `test` before `build` ¯\_(ツ)_/¯
|
||||||
- name: Compile (debug)
|
- name: Compile (debug)
|
||||||
run: cargo test --workspace --all-features --no-run --target ${{ matrix.settings.target }}
|
run: cargo build --quiet --workspace --all-features --target ${{ matrix.settings.target }}
|
||||||
|
|
||||||
- name: Compile (release)
|
- name: Compile (release)
|
||||||
run: cargo test --workspace --all-features --no-run --release --target ${{ matrix.settings.target }}
|
run: cargo build --quiet --workspace --all-features --release --target ${{ matrix.settings.target }}
|
||||||
|
|
||||||
|
- name: Clippy
|
||||||
|
run: cargo clippy --workspace --all-features --target ${{ matrix.settings.target }}
|
||||||
|
|
27
.github/workflows/ci.yml
vendored
27
.github/workflows/ci.yml
vendored
|
@ -18,7 +18,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Node.js, pnpm and dependencies
|
- name: Setup Node.js, pnpm and dependencies
|
||||||
uses: ./.github/actions/setup-pnpm
|
uses: ./.github/actions/setup-pnpm
|
||||||
|
@ -33,7 +33,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Node.js, pnpm and dependencies
|
- name: Setup Node.js, pnpm and dependencies
|
||||||
uses: ./.github/actions/setup-pnpm
|
uses: ./.github/actions/setup-pnpm
|
||||||
|
@ -58,9 +58,6 @@ jobs:
|
||||||
remove-haskell: 'true'
|
remove-haskell: 'true'
|
||||||
remove-docker-images: 'true'
|
remove-docker-images: 'true'
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Symlink target to C:\
|
- name: Symlink target to C:\
|
||||||
if: ${{ runner.os == 'Windows' }}
|
if: ${{ runner.os == 'Windows' }}
|
||||||
shell: powershell
|
shell: powershell
|
||||||
|
@ -68,7 +65,10 @@ jobs:
|
||||||
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
||||||
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
||||||
|
|
||||||
- uses: dorny/paths-filter@v2
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: dorny/paths-filter@v3
|
||||||
id: filter
|
id: filter
|
||||||
with:
|
with:
|
||||||
filters: |
|
filters: |
|
||||||
|
@ -87,6 +87,8 @@ jobs:
|
||||||
- name: Setup Rust and Prisma
|
- name: Setup Rust and Prisma
|
||||||
if: steps.filter.outputs.changes == 'true'
|
if: steps.filter.outputs.changes == 'true'
|
||||||
uses: ./.github/actions/setup-rust
|
uses: ./.github/actions/setup-rust
|
||||||
|
with:
|
||||||
|
restore-cache: 'false'
|
||||||
|
|
||||||
- name: Run rustfmt
|
- name: Run rustfmt
|
||||||
if: steps.filter.outputs.changes == 'true'
|
if: steps.filter.outputs.changes == 'true'
|
||||||
|
@ -110,9 +112,6 @@ jobs:
|
||||||
remove-haskell: 'true'
|
remove-haskell: 'true'
|
||||||
remove-docker-images: 'true'
|
remove-docker-images: 'true'
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Symlink target to C:\
|
- name: Symlink target to C:\
|
||||||
if: ${{ runner.os == 'Windows' }}
|
if: ${{ runner.os == 'Windows' }}
|
||||||
shell: powershell
|
shell: powershell
|
||||||
|
@ -120,7 +119,10 @@ jobs:
|
||||||
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
||||||
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
||||||
|
|
||||||
- uses: dorny/paths-filter@v2
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: dorny/paths-filter@v3
|
||||||
id: filter
|
id: filter
|
||||||
with:
|
with:
|
||||||
filters: |
|
filters: |
|
||||||
|
@ -146,10 +148,9 @@ jobs:
|
||||||
|
|
||||||
- name: Run Clippy
|
- name: Run Clippy
|
||||||
if: steps.filter.outputs.changes == 'true'
|
if: steps.filter.outputs.changes == 'true'
|
||||||
uses: actions-rs/clippy-check@v1
|
uses: actions-rs-plus/clippy-check@v2
|
||||||
with:
|
with:
|
||||||
args: --workspace --all-features
|
args: --workspace --all-features
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
# test:
|
# test:
|
||||||
# name: Test (${{ matrix.platform }})
|
# name: Test (${{ matrix.platform }})
|
||||||
|
@ -159,7 +160,7 @@ jobs:
|
||||||
# platform: [ubuntu-20.04, macos-latest, windows-latest]
|
# platform: [ubuntu-20.04, macos-latest, windows-latest]
|
||||||
# steps:
|
# steps:
|
||||||
# - name: Checkout repository
|
# - name: Checkout repository
|
||||||
# uses: actions/checkout@v3
|
# uses: actions/checkout@v4
|
||||||
#
|
#
|
||||||
# - name: Setup
|
# - name: Setup
|
||||||
# uses: ./.github/actions/setup
|
# uses: ./.github/actions/setup
|
||||||
|
|
6
.github/workflows/mobile-ci.yml
vendored
6
.github/workflows/mobile-ci.yml
vendored
|
@ -139,7 +139,7 @@ jobs:
|
||||||
|
|
||||||
ios:
|
ios:
|
||||||
name: iOS
|
name: iOS
|
||||||
runs-on: macos-12
|
runs-on: macos-14
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
@ -172,7 +172,7 @@ jobs:
|
||||||
version: latest
|
version: latest
|
||||||
|
|
||||||
# - name: Cache Pods
|
# - name: Cache Pods
|
||||||
# uses: actions/cache@v3
|
# uses: actions/cache@v4
|
||||||
# with:
|
# with:
|
||||||
# path: |
|
# path: |
|
||||||
# ./apps/mobile/ios/Pods
|
# ./apps/mobile/ios/Pods
|
||||||
|
@ -187,7 +187,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build iOS
|
- name: Build iOS
|
||||||
working-directory: ./apps/mobile/ios
|
working-directory: ./apps/mobile/ios
|
||||||
run: xcodebuild -workspace ./Spacedrive.xcworkspace -scheme Spacedrive -configuration Release -sdk iphonesimulator -derivedDataPath build -arch x86_64
|
run: xcodebuild -workspace ./Spacedrive.xcworkspace -scheme Spacedrive -configuration Release -sdk iphonesimulator -derivedDataPath build -arch "$(uname -m)"
|
||||||
|
|
||||||
- name: Install Maestro
|
- name: Install Maestro
|
||||||
run: |
|
run: |
|
||||||
|
|
11
.github/workflows/release.yml
vendored
11
.github/workflows/release.yml
vendored
|
@ -52,9 +52,6 @@ jobs:
|
||||||
remove-haskell: 'true'
|
remove-haskell: 'true'
|
||||||
remove-docker-images: 'true'
|
remove-docker-images: 'true'
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Symlink target to C:\
|
- name: Symlink target to C:\
|
||||||
if: ${{ runner.os == 'Windows' }}
|
if: ${{ runner.os == 'Windows' }}
|
||||||
shell: powershell
|
shell: powershell
|
||||||
|
@ -62,6 +59,9 @@ jobs:
|
||||||
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
New-Item -ItemType Directory -Force -Path C:\spacedrive_target
|
||||||
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
New-Item -Path target -ItemType Junction -Value C:\spacedrive_target
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Remove 32-bit libs
|
- name: Remove 32-bit libs
|
||||||
if: ${{ runner.os == 'Linux' }}
|
if: ${{ runner.os == 'Linux' }}
|
||||||
run: |
|
run: |
|
||||||
|
@ -140,10 +140,11 @@ jobs:
|
||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- name: Download artifacts
|
- name: Download artifacts
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v4
|
||||||
|
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
uses: softprops/action-gh-release@v1
|
# TODO: Change to stable version when available
|
||||||
|
uses: softprops/action-gh-release@4634c16
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
files: '*/**'
|
files: '*/**'
|
||||||
|
|
9
.github/workflows/server.yml
vendored
9
.github/workflows/server.yml
vendored
|
@ -25,7 +25,7 @@ jobs:
|
||||||
remove-docker-images: 'true'
|
remove-docker-images: 'true'
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Update buildah
|
- name: Update buildah
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@ -54,7 +54,8 @@ jobs:
|
||||||
|
|
||||||
- name: Build image
|
- name: Build image
|
||||||
id: build-image
|
id: build-image
|
||||||
uses: redhat-actions/buildah-build@v2
|
# TODO: Change to stable version when available
|
||||||
|
uses: redhat-actions/buildah-build@c79846f
|
||||||
with:
|
with:
|
||||||
tags: ${{ steps.image_info.outputs.tag }} ${{ github.event_name == 'release' && 'latest' || 'staging' }}
|
tags: ${{ steps.image_info.outputs.tag }} ${{ github.event_name == 'release' && 'latest' || 'staging' }}
|
||||||
archs: amd64
|
archs: amd64
|
||||||
|
@ -68,7 +69,9 @@ jobs:
|
||||||
./apps/server/docker/Dockerfile
|
./apps/server/docker/Dockerfile
|
||||||
|
|
||||||
- name: Push image to ghcr.io
|
- name: Push image to ghcr.io
|
||||||
uses: redhat-actions/push-to-registry@v2
|
# TODO: Restore redhat-actions/push-to-registry after PR is merged:
|
||||||
|
# https://github.com/redhat-actions/push-to-registry/pull/93
|
||||||
|
uses: Eusebiotrigo/push-to-registry@5acfa47
|
||||||
with:
|
with:
|
||||||
tags: ${{ steps.build-image.outputs.tags }}
|
tags: ${{ steps.build-image.outputs.tags }}
|
||||||
image: ${{ steps.build-image.outputs.image }}
|
image: ${{ steps.build-image.outputs.image }}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
# built product/cache
|
# built product/cache
|
||||||
target/
|
target/
|
||||||
dist/
|
dist/
|
||||||
|
|
||||||
|
# Mobile build artifacts
|
||||||
|
apps/mobile/.expo
|
||||||
apps/mobile/android/app/build
|
apps/mobile/android/app/build
|
||||||
apps/mobile/modules/sd-core/android/build
|
apps/mobile/modules/sd-core/android/build
|
||||||
|
|
||||||
|
|
|
@ -100,6 +100,10 @@ libp2p-core = { git = "https://github.com/spacedriveapp/rust-libp2p.git", rev =
|
||||||
libp2p-swarm = { git = "https://github.com/spacedriveapp/rust-libp2p.git", rev = "a005656df7e82059a0eb2e333ebada4731d23f8c" }
|
libp2p-swarm = { git = "https://github.com/spacedriveapp/rust-libp2p.git", rev = "a005656df7e82059a0eb2e333ebada4731d23f8c" }
|
||||||
libp2p-stream = { git = "https://github.com/spacedriveapp/rust-libp2p.git", rev = "a005656df7e82059a0eb2e333ebada4731d23f8c" }
|
libp2p-stream = { git = "https://github.com/spacedriveapp/rust-libp2p.git", rev = "a005656df7e82059a0eb2e333ebada4731d23f8c" }
|
||||||
|
|
||||||
|
[profile.dev]
|
||||||
|
# Make compilation faster on macOS
|
||||||
|
split-debuginfo = "unpacked"
|
||||||
|
|
||||||
# Set the settings for build scripts and proc-macros.
|
# Set the settings for build scripts and proc-macros.
|
||||||
[profile.dev.build-override]
|
[profile.dev.build-override]
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
|
|
|
@ -6,6 +6,13 @@ if [ "${CI:-}" = "true" ]; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
err() {
|
||||||
|
for _line in "$@"; do
|
||||||
|
echo "$_line" >&2
|
||||||
|
done
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
if [ -z "${HOME:-}" ]; then
|
if [ -z "${HOME:-}" ]; then
|
||||||
HOME="$(CDPATH='' cd -- "$(osascript -e 'set output to (POSIX path of (path to home folder))')" && pwd -P)"
|
HOME="$(CDPATH='' cd -- "$(osascript -e 'set output to (POSIX path of (path to home folder))')" && pwd -P)"
|
||||||
export HOME
|
export HOME
|
||||||
|
@ -28,23 +35,21 @@ fi
|
||||||
# Required for CI and for everyone I guess?
|
# Required for CI and for everyone I guess?
|
||||||
export PATH="${CARGO_HOME:-"${HOME}/.cargo"}/bin:$PATH"
|
export PATH="${CARGO_HOME:-"${HOME}/.cargo"}/bin:$PATH"
|
||||||
|
|
||||||
# TODO: Also do this for non-Apple Silicon Macs
|
|
||||||
if [ "${SPACEDRIVE_CI:-}" = "1" ]; then
|
|
||||||
|
|
||||||
cargo build -p sd-mobile-ios --target x86_64-apple-ios
|
|
||||||
|
|
||||||
if [ "${PLATFORM_NAME:-}" = "iphonesimulator" ]; then
|
|
||||||
lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_iossim.a "$TARGET_DIRECTORY"/x86_64-apple-ios/debug/libsd_mobile_ios.a
|
|
||||||
else
|
|
||||||
lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_ios.a "$TARGET_DIRECTORY"/x86_64-apple-ios/debug/libsd_mobile_ios.a
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${PLATFORM_NAME:-}" = "iphonesimulator" ]; then
|
if [ "${PLATFORM_NAME:-}" = "iphonesimulator" ]; then
|
||||||
cargo build -p sd-mobile-ios --target aarch64-apple-ios-sim
|
case "$(uname -m)" in
|
||||||
lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_iossim.a "$TARGET_DIRECTORY"/aarch64-apple-ios-sim/debug/libsd_mobile_ios.a
|
"arm64" | "aarch64") # M series
|
||||||
|
cargo build -p sd-mobile-ios --target aarch64-apple-ios-sim
|
||||||
|
lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_iossim.a "$TARGET_DIRECTORY"/aarch64-apple-ios-sim/debug/libsd_mobile_ios.a
|
||||||
|
;;
|
||||||
|
"x86_64") # Intel
|
||||||
|
cargo build -p sd-mobile-ios --target x86_64-apple-ios
|
||||||
|
lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_iossim.a "$TARGET_DIRECTORY"/x86_64-apple-ios/debug/libsd_mobile_ios.a
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
err 'Unsupported architecture.'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
cargo build -p sd-mobile-ios --target aarch64-apple-ios
|
cargo build -p sd-mobile-ios --target aarch64-apple-ios --release
|
||||||
lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_ios.a "$TARGET_DIRECTORY"/aarch64-apple-ios/debug/libsd_mobile_ios.a
|
lipo -create -output "$TARGET_DIRECTORY"/libsd_mobile_ios.a "$TARGET_DIRECTORY"/aarch64-apple-ios/release/libsd_mobile_ios.a
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -101,6 +101,31 @@ try {
|
||||||
// Generate .cargo/config.toml
|
// Generate .cargo/config.toml
|
||||||
console.log('Generating cargo config...')
|
console.log('Generating cargo config...')
|
||||||
try {
|
try {
|
||||||
|
let isWin = false
|
||||||
|
let isMacOS = false
|
||||||
|
let isLinux = false
|
||||||
|
/** @type {boolean | { linker: string }} */
|
||||||
|
let hasLLD = false
|
||||||
|
switch (machineId[0]) {
|
||||||
|
case 'Linux':
|
||||||
|
isLinux = true
|
||||||
|
if (await which('clang')) {
|
||||||
|
if (await which('mold')) {
|
||||||
|
hasLLD = { linker: 'mold' }
|
||||||
|
} else if (await which('lld')) {
|
||||||
|
hasLLD = { linker: 'lld' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case 'Darwin':
|
||||||
|
isMacOS = true
|
||||||
|
break
|
||||||
|
case 'Windows_NT':
|
||||||
|
isWin = true
|
||||||
|
hasLLD = await which('lld-link')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
await fs.writeFile(
|
await fs.writeFile(
|
||||||
path.join(__root, '.cargo', 'config.toml'),
|
path.join(__root, '.cargo', 'config.toml'),
|
||||||
mustache
|
mustache
|
||||||
|
@ -109,9 +134,9 @@ try {
|
||||||
encoding: 'utf8',
|
encoding: 'utf8',
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
isWin: machineId[0] === 'Windows_NT',
|
isWin,
|
||||||
isMacOS: machineId[0] === 'Darwin',
|
isMacOS,
|
||||||
isLinux: machineId[0] === 'Linux',
|
isLinux,
|
||||||
// Escape windows path separator to be compatible with TOML parsing
|
// Escape windows path separator to be compatible with TOML parsing
|
||||||
protoc: path
|
protoc: path
|
||||||
.join(
|
.join(
|
||||||
|
@ -121,6 +146,7 @@ try {
|
||||||
)
|
)
|
||||||
.replaceAll('\\', '\\\\'),
|
.replaceAll('\\', '\\\\'),
|
||||||
nativeDeps: nativeDeps.replaceAll('\\', '\\\\'),
|
nativeDeps: nativeDeps.replaceAll('\\', '\\\\'),
|
||||||
|
hasLLD,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.replace(/\n\n+/g, '\n'),
|
.replace(/\n\n+/g, '\n'),
|
||||||
|
|
Loading…
Reference in a new issue