mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Fix FreeBSD cross-compilation (#4251)
* Cleanup compiler container * Fix FreeBSD cross-compilation * Bump compiler version --------- Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -12,7 +12,7 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
COMPILER_IMAGE: stashapp/compiler:7
|
COMPILER_IMAGE: stashapp/compiler:8
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|||||||
5
Makefile
5
Makefile
@@ -145,7 +145,6 @@ stash-macapp: flags-release flags-pie stash
|
|||||||
build-cc-windows: export GOOS := windows
|
build-cc-windows: export GOOS := windows
|
||||||
build-cc-windows: export GOARCH := amd64
|
build-cc-windows: export GOARCH := amd64
|
||||||
build-cc-windows: export CC := x86_64-w64-mingw32-gcc
|
build-cc-windows: export CC := x86_64-w64-mingw32-gcc
|
||||||
build-cc-windows: export CXX := x86_64-w64-mingw32-g++
|
|
||||||
build-cc-windows: STASH_OUTPUT := -o dist/stash-win.exe
|
build-cc-windows: STASH_OUTPUT := -o dist/stash-win.exe
|
||||||
build-cc-windows: PHASHER_OUTPUT :=-o dist/phasher-win.exe
|
build-cc-windows: PHASHER_OUTPUT :=-o dist/phasher-win.exe
|
||||||
build-cc-windows: flags-release
|
build-cc-windows: flags-release
|
||||||
@@ -156,7 +155,6 @@ build-cc-windows: build
|
|||||||
build-cc-macos-intel: export GOOS := darwin
|
build-cc-macos-intel: export GOOS := darwin
|
||||||
build-cc-macos-intel: export GOARCH := amd64
|
build-cc-macos-intel: export GOARCH := amd64
|
||||||
build-cc-macos-intel: export CC := o64-clang
|
build-cc-macos-intel: export CC := o64-clang
|
||||||
build-cc-macos-intel: export CXX := o64-clang++
|
|
||||||
build-cc-macos-intel: STASH_OUTPUT := -o dist/stash-macos-intel
|
build-cc-macos-intel: STASH_OUTPUT := -o dist/stash-macos-intel
|
||||||
build-cc-macos-intel: PHASHER_OUTPUT := -o dist/phasher-macos-intel
|
build-cc-macos-intel: PHASHER_OUTPUT := -o dist/phasher-macos-intel
|
||||||
build-cc-macos-intel: flags-release
|
build-cc-macos-intel: flags-release
|
||||||
@@ -168,7 +166,6 @@ build-cc-macos-intel: build
|
|||||||
build-cc-macos-arm: export GOOS := darwin
|
build-cc-macos-arm: export GOOS := darwin
|
||||||
build-cc-macos-arm: export GOARCH := arm64
|
build-cc-macos-arm: export GOARCH := arm64
|
||||||
build-cc-macos-arm: export CC := oa64e-clang
|
build-cc-macos-arm: export CC := oa64e-clang
|
||||||
build-cc-macos-arm: export CXX := oa64e-clang++
|
|
||||||
build-cc-macos-arm: STASH_OUTPUT := -o dist/stash-macos-arm
|
build-cc-macos-arm: STASH_OUTPUT := -o dist/stash-macos-arm
|
||||||
build-cc-macos-arm: PHASHER_OUTPUT := -o dist/phasher-macos-arm
|
build-cc-macos-arm: PHASHER_OUTPUT := -o dist/phasher-macos-arm
|
||||||
build-cc-macos-arm: flags-release
|
build-cc-macos-arm: flags-release
|
||||||
@@ -198,6 +195,7 @@ build-cc-macos:
|
|||||||
.PHONY: build-cc-freebsd
|
.PHONY: build-cc-freebsd
|
||||||
build-cc-freebsd: export GOOS := freebsd
|
build-cc-freebsd: export GOOS := freebsd
|
||||||
build-cc-freebsd: export GOARCH := amd64
|
build-cc-freebsd: export GOARCH := amd64
|
||||||
|
build-cc-freebsd: export CC := clang -target x86_64-unknown-freebsd12.0 --sysroot=/opt/cross-freebsd
|
||||||
build-cc-freebsd: STASH_OUTPUT := -o dist/stash-freebsd
|
build-cc-freebsd: STASH_OUTPUT := -o dist/stash-freebsd
|
||||||
build-cc-freebsd: PHASHER_OUTPUT := -o dist/phasher-freebsd
|
build-cc-freebsd: PHASHER_OUTPUT := -o dist/phasher-freebsd
|
||||||
build-cc-freebsd: flags-release
|
build-cc-freebsd: flags-release
|
||||||
@@ -253,6 +251,7 @@ build-cc-all:
|
|||||||
make build-cc-linux-arm64v8
|
make build-cc-linux-arm64v8
|
||||||
make build-cc-linux-arm32v7
|
make build-cc-linux-arm32v7
|
||||||
make build-cc-linux-arm32v6
|
make build-cc-linux-arm32v6
|
||||||
|
make build-cc-freebsd
|
||||||
|
|
||||||
.PHONY: touch-ui
|
.PHONY: touch-ui
|
||||||
touch-ui:
|
touch-ui:
|
||||||
|
|||||||
@@ -2,66 +2,82 @@ FROM golang:1.19
|
|||||||
|
|
||||||
LABEL maintainer="https://discord.gg/2TsNFKt"
|
LABEL maintainer="https://discord.gg/2TsNFKt"
|
||||||
|
|
||||||
# Install tools
|
RUN apt-get update && apt-get install -y apt-transport-https ca-certificates gnupg
|
||||||
RUN apt-get update && apt-get install -y apt-transport-https
|
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
|
RUN mkdir -p /etc/apt/keyrings
|
||||||
|
|
||||||
|
ADD https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key nodesource.gpg.key
|
||||||
|
RUN cat nodesource.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && rm nodesource.gpg.key
|
||||||
|
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
|
||||||
|
|
||||||
# prevent caching of the key
|
|
||||||
ADD https://dl.yarnpkg.com/debian/pubkey.gpg yarn.gpg
|
ADD https://dl.yarnpkg.com/debian/pubkey.gpg yarn.gpg
|
||||||
RUN cat yarn.gpg | apt-key add - && \
|
RUN cat yarn.gpg | gpg --dearmor -o /etc/apt/keyrings/yarn.gpg && rm yarn.gpg
|
||||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
RUN echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
||||||
rm yarn.gpg
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y automake autogen cmake \
|
apt-get install -y --no-install-recommends \
|
||||||
libtool libxml2-dev uuid-dev libssl-dev bash \
|
git make tar bash nodejs yarn zip \
|
||||||
patch make tar xz-utils bzip2 gzip zlib1g-dev sed cpio \
|
clang llvm-dev cmake patch libxml2-dev uuid-dev libssl-dev xz-utils \
|
||||||
gcc-10-multilib gcc-mingw-w64 g++-mingw-w64 clang llvm-dev \
|
bzip2 gzip sed cpio libbz2-dev zlib1g-dev \
|
||||||
|
gcc-mingw-w64 \
|
||||||
gcc-arm-linux-gnueabi libc-dev-armel-cross linux-libc-dev-armel-cross \
|
gcc-arm-linux-gnueabi libc-dev-armel-cross linux-libc-dev-armel-cross \
|
||||||
gcc-arm-linux-gnueabihf libc-dev-armhf-cross \
|
gcc-aarch64-linux-gnu libc-dev-arm64-cross && \
|
||||||
gcc-aarch64-linux-gnu libc-dev-arm64-cross \
|
|
||||||
nodejs yarn zip --no-install-recommends || exit 1; \
|
|
||||||
rm -rf /var/lib/apt/lists/*;
|
rm -rf /var/lib/apt/lists/*;
|
||||||
|
|
||||||
# Cross compile setup
|
# FreeBSD cross-compilation setup
|
||||||
|
# https://github.com/smartmontools/docker-build/blob/6b8c92560d17d325310ba02d9f5a4b250cb0764a/Dockerfile#L66
|
||||||
|
ENV FREEBSD_VERSION 12.4
|
||||||
|
ENV FREEBSD_DOWNLOAD_URL http://ftp.plusline.de/FreeBSD/releases/amd64/${FREEBSD_VERSION}-RELEASE/base.txz
|
||||||
|
ENV FREEBSD_SHA 581c7edacfd2fca2bdf5791f667402d22fccd8a5e184635e0cac075564d57aa8
|
||||||
|
|
||||||
|
RUN cd /tmp && \
|
||||||
|
curl -o base.txz $FREEBSD_DOWNLOAD_URL && \
|
||||||
|
echo "$FREEBSD_SHA base.txz" | sha256sum -c - && \
|
||||||
|
mkdir -p /opt/cross-freebsd && \
|
||||||
|
cd /opt/cross-freebsd && \
|
||||||
|
tar -xf /tmp/base.txz ./lib/ ./usr/lib/ ./usr/include/ && \
|
||||||
|
rm -f /tmp/base.txz && \
|
||||||
|
cd /opt/cross-freebsd/usr/lib && \
|
||||||
|
find . -xtype l | xargs ls -l | grep ' /lib/' | awk '{print "ln -sf /opt/cross-freebsd"$11 " " $9}' | /bin/sh && \
|
||||||
|
ln -s libc++.a libstdc++.a && \
|
||||||
|
ln -s libc++.so libstdc++.so
|
||||||
|
|
||||||
|
# macOS cross-compilation setup
|
||||||
ENV OSX_SDK_VERSION 11.3
|
ENV OSX_SDK_VERSION 11.3
|
||||||
ENV OSX_SDK_DOWNLOAD_FILE=MacOSX${OSX_SDK_VERSION}.sdk.tar.xz
|
ENV OSX_SDK_DOWNLOAD_FILE MacOSX${OSX_SDK_VERSION}.sdk.tar.xz
|
||||||
ENV OSX_SDK_DOWNLOAD_URL=https://github.com/phracker/MacOSX-SDKs/releases/download/${OSX_SDK_VERSION}/${OSX_SDK_DOWNLOAD_FILE}
|
ENV OSX_SDK_DOWNLOAD_URL https://github.com/phracker/MacOSX-SDKs/releases/download/${OSX_SDK_VERSION}/${OSX_SDK_DOWNLOAD_FILE}
|
||||||
ENV OSX_SDK_SHA=cd4f08a75577145b8f05245a2975f7c81401d75e9535dcffbb879ee1deefcbf4
|
ENV OSX_SDK_SHA cd4f08a75577145b8f05245a2975f7c81401d75e9535dcffbb879ee1deefcbf4
|
||||||
ENV OSX_SDK MacOSX$OSX_SDK_VERSION.sdk
|
ENV OSXCROSS_REVISION 5e1b71fcceb23952f3229995edca1b6231525b5b
|
||||||
ENV OSX_NDK_X86 /usr/local/osx-ndk-x86
|
ENV OSXCROSS_DOWNLOAD_URL https://codeload.github.com/tpoechtrager/osxcross/tar.gz/${OSXCROSS_REVISION}
|
||||||
|
ENV OSXCROSS_SHA d3f771bbc20612fea577b18a71be3af2eb5ad2dd44624196cf55de866d008647
|
||||||
|
|
||||||
RUN wget ${OSX_SDK_DOWNLOAD_URL}
|
RUN cd /tmp && \
|
||||||
RUN echo "$OSX_SDK_SHA $OSX_SDK_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \
|
curl -o osxcross.tar.gz $OSXCROSS_DOWNLOAD_URL && \
|
||||||
git clone https://github.com/tpoechtrager/osxcross.git; \
|
echo "$OSXCROSS_SHA osxcross.tar.gz" | sha256sum -c - && \
|
||||||
mv $OSX_SDK_DOWNLOAD_FILE osxcross/tarballs/
|
mkdir osxcross && \
|
||||||
|
tar --strip=1 -C osxcross -xf osxcross.tar.gz && \
|
||||||
|
rm -f osxcross.tar.gz && \
|
||||||
|
curl -Lo $OSX_SDK_DOWNLOAD_FILE $OSX_SDK_DOWNLOAD_URL && \
|
||||||
|
echo "$OSX_SDK_SHA $OSX_SDK_DOWNLOAD_FILE" | sha256sum -c - && \
|
||||||
|
mv $OSX_SDK_DOWNLOAD_FILE osxcross/tarballs/ && \
|
||||||
|
UNATTENDED=yes SDK_VERSION=$OSX_SDK_VERSION OSX_VERSION_MIN=10.10 osxcross/build.sh && \
|
||||||
|
cp osxcross/target/lib/* /usr/lib/ && \
|
||||||
|
mv osxcross/target /opt/osx-ndk-x86 && \
|
||||||
|
rm -rf /tmp/osxcross
|
||||||
|
|
||||||
RUN UNATTENDED=yes SDK_VERSION=${OSX_SDK_VERSION} OSX_VERSION_MIN=10.10 osxcross/build.sh || exit 1;
|
ENV PATH /opt/osx-ndk-x86/bin:$PATH
|
||||||
RUN cp osxcross/target/lib/* /usr/lib/ ; \
|
|
||||||
mv osxcross/target $OSX_NDK_X86; \
|
|
||||||
rm -rf osxcross;
|
|
||||||
|
|
||||||
ENV PATH $OSX_NDK_X86/bin:$PATH
|
RUN mkdir -p /root/.ssh && \
|
||||||
|
chmod 0700 /root/.ssh && \
|
||||||
|
ssh-keyscan github.com > /root/.ssh/known_hosts
|
||||||
|
|
||||||
RUN mkdir -p /root/.ssh; \
|
# ignore "dubious ownership" errors
|
||||||
chmod 0700 /root/.ssh; \
|
RUN git config --global safe.directory '*'
|
||||||
ssh-keyscan github.com > /root/.ssh/known_hosts;
|
|
||||||
|
|
||||||
# Notes for self:
|
|
||||||
|
|
||||||
# To test locally:
|
# To test locally:
|
||||||
# make generate
|
# make generate
|
||||||
# make ui
|
# make ui
|
||||||
# cd docker/compiler
|
# cd docker/compiler
|
||||||
# make build
|
# make build
|
||||||
# docker run -it -v /PATH_TO_STASH:/go/stash stashapp/compiler:latest /bin/bash
|
# docker run --rm -v /PATH_TO_STASH:/stash -w /stash -i -t stashapp/compiler:latest make build-cc-all
|
||||||
# cd stash
|
|
||||||
# make cross-compile-all
|
|
||||||
# # binaries will show up in /dist
|
# # binaries will show up in /dist
|
||||||
|
|
||||||
# Windows:
|
|
||||||
# GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ go build -ldflags "-extldflags '-static'" -tags extended
|
|
||||||
|
|
||||||
# Darwin
|
|
||||||
# CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build -tags extended
|
|
||||||
# env goreleaser --config=goreleaser-extended.yml --skip-publish --skip-validate --rm-dist --release-notes=temp/0.48-relnotes-ready.md
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
user=stashapp
|
user=stashapp
|
||||||
repo=compiler
|
repo=compiler
|
||||||
version=7
|
version=8
|
||||||
|
|
||||||
latest:
|
latest:
|
||||||
docker build -t ${user}/${repo}:latest .
|
docker build -t ${user}/${repo}:latest .
|
||||||
|
|||||||
Reference in New Issue
Block a user