forked from gythialy/golang-cross
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add osx-cross builder with supporting macOS SDK 10.15 (gythialy#3)
- Loading branch information
Showing
3 changed files
with
112 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,33 @@ | ||
FROM dockercore/golang-cross | ||
FROM goreng/golang-cross-builder:v1.15.1 | ||
|
||
LABEL maintainer="Goren G<[email protected]>" | ||
|
||
COPY entrypoint.sh / | ||
|
||
# install arm gcc | ||
RUN apt-get update -qq && apt-get install -y -q build-essential \ | ||
gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ | ||
libc6-dev-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev \ | ||
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \ | ||
gcc-mingw-w64 g++-mingw-w64 && \ | ||
apt -y autoremove && \ | ||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||
ARG GOLANG_VERSION=1.15.1 | ||
ARG GOLANG_DIST_SHA=70ac0dbf60a8ee9236f337ed0daa7a4c3b98f6186d4497826f68e97c0c0413f6 | ||
|
||
# update golang | ||
RUN \ | ||
GOLANG_DIST=https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz && \ | ||
wget -O go.tgz "$GOLANG_DIST"; \ | ||
echo "${GOLANG_DIST_SHA} *go.tgz" | sha256sum -c -; \ | ||
rm -rf /usr/local/go; \ | ||
tar -C /usr/local -xzf go.tgz; \ | ||
rm go.tgz; | ||
|
||
# install goreleaser | ||
ARG GORELEASER_VERSION=0.143.0 | ||
ARG GORELEASER_SHA=cc435eb337889d41414de80fd8474806187a3e908754cbf4599aa0a7604a3134 | ||
RUN \ | ||
GORELEASER_VERSION=0.141.0 && \ | ||
GORELEASER_SHA=00a00e7e7ea72c2bc44d1f1e50eccfac361e0a1332ee0fcde8107da442c3a4d8 && \ | ||
GORELEASER_DOWNLOAD_FILE=goreleaser_Linux_x86_64.tar.gz && \ | ||
GORELEASER_DOWNLOAD_URL=https://github.com/goreleaser/goreleaser/releases/download/v${GORELEASER_VERSION}/${GORELEASER_DOWNLOAD_FILE} && \ | ||
wget ${GORELEASER_DOWNLOAD_URL}; \ | ||
echo "$GORELEASER_SHA $GORELEASER_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \ | ||
tar -xzf $GORELEASER_DOWNLOAD_FILE -C /usr/bin/ goreleaser; \ | ||
rm $GORELEASER_DOWNLOAD_FILE; | ||
|
||
# update golang | ||
RUN \ | ||
GOLANG_VERSION=1.15 && \ | ||
GOLANG_DIST=https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz \ | ||
GOLANG_DIST_SHA=2d75848ac606061efe52a8068d0e647b35ce487a15bb52272c427df485193602 && \ | ||
wget -O go.tgz "$GOLANG_DIST"; \ | ||
echo "${GOLANG_DIST_SHA} *go.tgz" | sha256sum -c -; \ | ||
rm -rf /usr/local/go; \ | ||
tar -C /usr/local -xzf go.tgz; \ | ||
rm go.tgz; | ||
|
||
# install git-chglog | ||
RUN go get -u github.com/git-chglog/git-chglog/cmd/git-chglog && \ | ||
chmod +x /entrypoint.sh | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# golang parameters | ||
ARG GO_VERSION=1.15.1 | ||
|
||
# OS-X SDK parameters | ||
ARG OSX_SDK=MacOSX10.15.sdk | ||
ARG OSX_SDK_SUM=a30d653494cb64ff38640a48ae0e0d749e515c992302f417672605c279f95732 | ||
|
||
# osxcross parameters | ||
ARG OSX_VERSION_MIN=10.12 | ||
ARG OSX_CROSS_COMMIT=2733413b6847c1489d6230f062d3293e6f42a021 | ||
|
||
FROM golang:${GO_VERSION}-buster AS base | ||
|
||
ARG APT_MIRROR | ||
RUN sed -ri "s/(httpredir|deb).debian.org/${APT_MIRROR:-deb.debian.org}/g" /etc/apt/sources.list \ | ||
&& sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list | ||
ENV OSX_CROSS_PATH=/osxcross | ||
|
||
FROM base AS osx-sdk | ||
ARG OSX_SDK | ||
ARG OSX_SDK_SUM | ||
|
||
COPY ${OSX_SDK}.tar.xz "${OSX_CROSS_PATH}/tarballs/${OSX_SDK}.tar.xz" | ||
RUN echo "${OSX_SDK_SUM}" "${OSX_CROSS_PATH}/tarballs/${OSX_SDK}.tar.xz" | sha256sum -c - | ||
|
||
FROM base AS osx-cross-base | ||
ARG DEBIAN_FRONTEND=noninteractive | ||
# Install deps | ||
RUN set -x; echo "Starting image build for Debian Stretch" \ | ||
&& dpkg --add-architecture arm64 \ | ||
&& dpkg --add-architecture armel \ | ||
&& dpkg --add-architecture armhf \ | ||
&& dpkg --add-architecture i386 \ | ||
&& dpkg --add-architecture mips \ | ||
&& dpkg --add-architecture mipsel \ | ||
&& dpkg --add-architecture powerpc \ | ||
&& dpkg --add-architecture ppc64el \ | ||
&& apt-get update \ | ||
&& apt-get install -y -q \ | ||
autoconf \ | ||
automake \ | ||
autotools-dev \ | ||
bc \ | ||
binfmt-support \ | ||
binutils-multiarch \ | ||
binutils-multiarch-dev \ | ||
build-essential \ | ||
clang \ | ||
crossbuild-essential-arm64 \ | ||
crossbuild-essential-armel \ | ||
crossbuild-essential-armhf \ | ||
crossbuild-essential-mipsel \ | ||
crossbuild-essential-ppc64el \ | ||
curl \ | ||
devscripts \ | ||
gdb \ | ||
git-core \ | ||
libtool \ | ||
llvm \ | ||
mercurial \ | ||
multistrap \ | ||
patch \ | ||
software-properties-common \ | ||
subversion \ | ||
wget \ | ||
xz-utils \ | ||
cmake \ | ||
qemu-user-static \ | ||
libxml2-dev \ | ||
lzma-dev \ | ||
openssl \ | ||
mingw-w64 \ | ||
libssl-dev && \ | ||
apt -y autoremove && \ | ||
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||
|
||
# FIXME: install gcc-multilib | ||
# FIXME: add mips and powerpc architectures | ||
|
||
FROM osx-cross-base AS osx-cross | ||
ARG OSX_CROSS_COMMIT | ||
WORKDIR "${OSX_CROSS_PATH}" | ||
# install osxcross: | ||
RUN git clone https://github.com/tpoechtrager/osxcross.git . \ | ||
&& git checkout -q "${OSX_CROSS_COMMIT}" \ | ||
&& rm -rf ./.git | ||
COPY --from=osx-sdk "${OSX_CROSS_PATH}/." "${OSX_CROSS_PATH}/" | ||
ARG OSX_VERSION_MIN | ||
RUN UNATTENDED=yes OSX_VERSION_MIN=${OSX_VERSION_MIN} ./build.sh | ||
|
||
FROM osx-cross-base AS final | ||
LABEL maintainer="Goren G<[email protected]>" | ||
ARG DEBIAN_FRONTEND=noninteractive | ||
|
||
COPY --from=osx-cross "${OSX_CROSS_PATH}/." "${OSX_CROSS_PATH}/" | ||
ENV PATH=${OSX_CROSS_PATH}/target/bin:$PATH |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters