mirror of
https://github.com/stashapp/stash.git
synced 2026-03-26 07:01:54 +01:00
* update compiler and build process - assemble cross-builds in multi-build steps - clean up unnecessary dependences - use node docker image instead of nodesource (unsupported) - downgrade to freebsd12 to match compiler Co-authored-by: Gykes <Gykes@pm.me> * [compiler] use new image instead of placeholder removes .gitignore, update README * [CI] lock pnpm action-setup to SHA hash * bump @actions/upload-artifact --------- Co-authored-by: feederbox826 <feederbox826@users.noreply.github.com> Co-authored-by: Gykes <Gykes@pm.me> Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
86 lines
No EOL
3.2 KiB
Docker
86 lines
No EOL
3.2 KiB
Docker
### OSXCROSS
|
|
FROM debian:bookworm AS osxcross
|
|
# add osxcross
|
|
WORKDIR /tmp/osxcross
|
|
ARG OSXCROSS_REVISION=5e1b71fcceb23952f3229995edca1b6231525b5b
|
|
ADD --checksum=sha256:d3f771bbc20612fea577b18a71be3af2eb5ad2dd44624196cf55de866d008647 https://codeload.github.com/tpoechtrager/osxcross/tar.gz/${OSXCROSS_REVISION} /tmp/osxcross.tar.gz
|
|
|
|
ARG OSX_SDK_VERSION=11.3
|
|
ARG OSX_SDK_DOWNLOAD_FILE=MacOSX${OSX_SDK_VERSION}.sdk.tar.xz
|
|
ARG OSX_SDK_DOWNLOAD_URL=https://github.com/phracker/MacOSX-SDKs/releases/download/${OSX_SDK_VERSION}/${OSX_SDK_DOWNLOAD_FILE}
|
|
ADD --checksum=sha256:cd4f08a75577145b8f05245a2975f7c81401d75e9535dcffbb879ee1deefcbf4 ${OSX_SDK_DOWNLOAD_URL} /tmp/osxcross/tarballs/${OSX_SDK_DOWNLOAD_FILE}
|
|
|
|
ENV UNATTENDED=yes \
|
|
SDK_VERSION=${OSX_SDK_VERSION} \
|
|
OSX_VERSION_MIN=10.10
|
|
RUN apt update && \
|
|
apt install -y --no-install-recommends \
|
|
bash ca-certificates clang cmake git patch libssl-dev bzip2 cpio libbz2-dev libxml2-dev make python3 xz-utils zlib1g-dev
|
|
# lzma-dev libxml2-dev xz
|
|
RUN tar --strip=1 -C /tmp/osxcross -xf /tmp/osxcross.tar.gz
|
|
RUN ./build.sh
|
|
|
|
### FREEBSD cross-compilation stage
|
|
# use alpine for cacheable image since apt is notorous for not caching
|
|
FROM alpine:3 AS freebsd
|
|
# match golang latest
|
|
# https://go.dev/wiki/FreeBSD
|
|
ARG FREEBSD_VERSION=12.4
|
|
ADD --checksum=sha256:581c7edacfd2fca2bdf5791f667402d22fccd8a5e184635e0cac075564d57aa8 \
|
|
http://ftp-archive.freebsd.org/mirror/FreeBSD-Archive/old-releases/amd64/${FREEBSD_VERSION}-RELEASE/base.txz \
|
|
/tmp/base.txz
|
|
|
|
WORKDIR /opt/cross-freebsd
|
|
RUN apk add --no-cache tar xz
|
|
RUN tar -xf /tmp/base.txz --strip-components=1 ./usr/lib ./usr/include ./lib
|
|
RUN cd /opt/cross-freebsd/usr/lib && \
|
|
find . -type l -exec sh -c ' \
|
|
for link; do \
|
|
target=$(readlink "$link"); \
|
|
case "$target" in \
|
|
/lib/*) ln -sf "/opt/cross-freebsd$target" "$link";; \
|
|
esac; \
|
|
done \
|
|
' sh {} + && \
|
|
ln -s libc++.a libstdc++.a && \
|
|
ln -s libc++.so libstdc++.so
|
|
|
|
### BUILDER
|
|
FROM golang:1.24.3 AS builder
|
|
ENV PATH=/opt/osx-ndk-x86/bin:$PATH
|
|
|
|
# copy in nodejs instead of using nodesource :thumbsup:
|
|
COPY --from=docker.io/library/node:24-bookworm /usr/local /usr/local
|
|
# copy in osxcross
|
|
COPY --from=osxcross /tmp/osxcross/target/lib /usr/lib
|
|
COPY --from=osxcross /tmp/osxcross/target /opt/osx-ndk-x86
|
|
# copy in cross-freebsd
|
|
COPY --from=freebsd /opt/cross-freebsd /opt/cross-freebsd
|
|
|
|
# pnpm install with npm
|
|
RUN npm install -g pnpm
|
|
|
|
# git for getting hash
|
|
# make and bash for building
|
|
|
|
# clang for macos
|
|
# zip for stashapp.zip
|
|
# gcc-extensions for cross-arch build
|
|
# we still target arm soft float?
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
git make bash \
|
|
clang zip \
|
|
gcc-mingw-w64 \
|
|
gcc-arm-linux-gnueabi \
|
|
libc-dev-armel-cross linux-libc-dev-armel-cross \
|
|
gcc-aarch64-linux-gnu libc-dev-arm64-cross && \
|
|
rm -rf /var/lib/apt/lists/*;
|
|
RUN git config --global safe.directory '*'
|
|
# To test locally:
|
|
# make generate
|
|
# make ui
|
|
# cd docker/compiler
|
|
# docker build . -t ghcr.io/stashapp/compiler:latest
|
|
# docker run --rm -v /PATH_TO_STASH:/stash -w /stash -i -t ghcr.io/stashapp/compiler:latest make build-cc-all
|
|
# # binaries will show up in /dist |