mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-04-19 22:19:49 -04:00
* Move postinstall script to a preprep script - Fix libheif crate failing to build with our libheif - Rework CI due to postinstall to preprep changes * Linux heif build script + Update webp * Fix ctrl+c/ctrl+v bug * Improve libheif linux script - Add support for linux aarch64 - Add CI workflow to build libheif for linux - Some other misc fixes * Fix libheif CI requires sudo * Fix wrong path for libheif build.rs override in Windows * Fix wrong path manipulations in libheif build script * 🤦 * Use ubuntu-latest in libheif action - Specify glib version in target triple to support old distros - Fix libheif artifact publishing * Fix artifact upload path again * Add musl support for libheif - Remove unused files from libheif artifact - Add setup logic for libheif in postinstall script * Build libheif for linux as a shared lib * Fix meson not building the correct arch - Add logic to get git branch from githubs CI env vars * libheif finnaly works on linux - Make spacedrive binary rpath point to where appimage and deb expects our libs to be - Add some logic to tauri.js to convince tauri to bundle our shared libs - Work-around appimage bundling step breaking sometimes - Add logic to handle sigint in tauri.js to ensure we clean up after ourselves - Rename postinstall.mjs to setup.mjs - Add logic to setup.mjs to point our dev build to our shared libs in linux * Fix windows dekstop dev - Rename setup.mjs to preprep.mjs * test cache-factory * Fix preprep script not parsing the cross compilation target triple and always using the host info to download dependencies - Fix action env vars not being correctly passed - Remove possibility to pass multiple targests to rust action * Don't compile mobile crates on desktop targets * Remove cache-factory pull_request trigger * remove patched tauri cli * Use git plumbing command to get remote branch name - Fallback to reading .git/HEAD if remote name was not retrieved * fix type --------- Co-authored-by: Brendan Allan <brendonovich@outlook.com>
88 lines
3.2 KiB
Docker
88 lines
3.2 KiB
Docker
ARG FAKE_DEPS="gettext-runtime libiconv ncurses" \
|
|
FFMPEG_DEPS="brotli bzip2 dav1d libde265 libjxl libopus libpng libvorbis libvpx-devel openjpeg \
|
|
soxr xz zimg" \
|
|
LIBWEBP_VERSION=1.3.2 \
|
|
FFMPEG_VERSION=6.0 \
|
|
LIBHEIF_VERSION=1.16.2
|
|
|
|
FROM vvasconcellos/osxcross:12.3-564e2b9-8 as base
|
|
|
|
SHELL ["/bin/bash", "-eux", "-o", "pipefail", "-c"]
|
|
|
|
WORKDIR /srv
|
|
|
|
ARG LIBWEBP_VERSION
|
|
ADD "https://github.com/webmproject/libwebp/archive/refs/tags/v${LIBWEBP_VERSION}.tar.gz" ./
|
|
RUN tar -xf "v${LIBWEBP_VERSION}.tar.gz" && rm "v${LIBWEBP_VERSION}.tar.gz" \
|
|
&& \
|
|
mv "/srv/libwebp-${LIBWEBP_VERSION}" /srv/libwebp
|
|
|
|
ARG LIBHEIF_VERSION
|
|
ADD "https://github.com/strukturag/libheif/releases/download/v${LIBHEIF_VERSION}/libheif-${LIBHEIF_VERSION}.tar.gz" ./
|
|
RUN tar -xf "libheif-${LIBHEIF_VERSION}.tar.gz" && rm "libheif-${LIBHEIF_VERSION}.tar.gz" \
|
|
&& \
|
|
mv "/srv/libheif-${LIBHEIF_VERSION}" /srv/libheif
|
|
|
|
ARG FFMPEG_VERSION
|
|
ADD "https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz" ./
|
|
RUN tar -xf "ffmpeg-${FFMPEG_VERSION}.tar.xz" && rm "ffmpeg-${FFMPEG_VERSION}.tar.xz" \
|
|
&& \
|
|
mv "/srv/ffmpeg-${FFMPEG_VERSION}" /srv/ffmpeg \
|
|
&& \
|
|
cd /srv/ffmpeg \
|
|
&& \
|
|
for patch in \
|
|
'https://github.com/macports/macports-ports/raw/0e62a6d66fbaa7faf7b4eb9029647d3d5651fb2e/multimedia/ffmpeg6/files/patch-libavcodec-audiotoolboxenc.c.diff' \
|
|
'https://github.com/macports/macports-ports/raw/0e62a6d66fbaa7faf7b4eb9029647d3d5651fb2e/multimedia/ffmpeg6/files/patch-avutil-builtin-available.diff' \
|
|
'https://github.com/macports/macports-ports/raw/0e62a6d66fbaa7faf7b4eb9029647d3d5651fb2e/multimedia/ffmpeg6/files/patch-libavcodec-profvidworkflow.diff' \
|
|
; do curl -LSs "$patch" | patch -p0; done
|
|
|
|
# ---
|
|
FROM base as x86_64
|
|
|
|
# Fake Install macOS dependencies not required to build ffmpeg
|
|
ARG FAKE_DEPS
|
|
# hadolint ignore=SC2086
|
|
RUN osxcross-macports fake-install $FAKE_DEPS
|
|
|
|
# Install macOS dependencies required to build ffmpeg
|
|
ARG FFMPEG_DEPS
|
|
# hadolint ignore=SC2086
|
|
RUN --mount=type=cache,id=macports-x86_64,target=/opt/osxcross/macports/cache \
|
|
osxcross-macports install $FFMPEG_DEPS
|
|
|
|
# Build ffmpeg
|
|
RUN --mount=src=build.sh,dst=/srv/build.sh /srv/build.sh x86_64 "$MACOSX_SDK"
|
|
|
|
# ---
|
|
FROM base as aarch64
|
|
|
|
# https://ffmpeg.org/pipermail/ffmpeg-user/2016-January/030202.html
|
|
ADD https://raw.githubusercontent.com/yuvi/gas-preprocessor/master/gas-preprocessor.pl /usr/local/bin/
|
|
RUN chmod +x /usr/local/bin/gas-preprocessor.pl
|
|
|
|
# Update min macOS version for arm64
|
|
# libbrotli macports precompiled binaries are only available for macOS 11.2+
|
|
ENV OSX_VERSION_MIN="11.2" \
|
|
MACOSX_DEPLOYMENT_TARGET="11.2"
|
|
|
|
# Fake Install macOS dependencies not required to build ffmpeg
|
|
ARG FAKE_DEPS
|
|
# hadolint ignore=SC2086
|
|
RUN osxcross-macports fake-install --arm64 $FAKE_DEPS
|
|
|
|
# Install macOS dependencies required to build ffmpeg
|
|
ARG FFMPEG_DEPS
|
|
# hadolint ignore=SC2086
|
|
RUN --mount=type=cache,id=macports-arm64,target=/opt/osxcross/macports/cache \
|
|
osxcross-macports install --arm64 $FFMPEG_DEPS
|
|
|
|
# Build ffmpeg
|
|
RUN --mount=src=build.sh,dst=/srv/build.sh /srv/build.sh aarch64 "$MACOSX_SDK"
|
|
|
|
# ---
|
|
FROM scratch
|
|
|
|
COPY --from=x86_64 /FFMpeg.framework /ffmpeg/x86_64/FFMpeg.framework
|
|
COPY --from=aarch64 /FFMpeg.framework /ffmpeg/aarch64/FFMpeg.framework
|