Working (limited) docker-cross build
This commit is contained in:
parent
0177cd478d
commit
f72215d29f
|
@ -19,7 +19,6 @@ WORKDIR ${GOPATH}/src/code.gitea.io/gitea
|
||||||
|
|
||||||
#Checkout version if set
|
#Checkout version if set
|
||||||
RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
|
RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
|
||||||
&& go env \
|
|
||||||
&& make clean generate build
|
&& make clean generate build
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -61,7 +61,7 @@ all: build
|
||||||
include docker/Makefile
|
include docker/Makefile
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean: docker-setup-clean
|
||||||
$(GO) clean -i ./...
|
$(GO) clean -i ./...
|
||||||
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) \
|
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) \
|
||||||
integrations*.test \
|
integrations*.test \
|
||||||
|
|
18
docker/Makefile
vendored
18
docker/Makefile
vendored
|
@ -1,8 +1,9 @@
|
||||||
#Makefile related to docker
|
#Makefile related to docker
|
||||||
|
|
||||||
|
GOHOSTARCH := $(shell go env GOHOSTARCH)
|
||||||
QEMU_VERSION ?= v2.12.0
|
QEMU_VERSION ?= v2.12.0
|
||||||
QEMU_ARCH ?= amd64
|
QEMU_ARCH ?= amd64
|
||||||
GOARCH ?= amd64
|
GOARCH ?= $(shell go env GOARCH)
|
||||||
TARGET ?= library
|
TARGET ?= library
|
||||||
|
|
||||||
DOCKER_IMAGE ?= gitea/gitea
|
DOCKER_IMAGE ?= gitea/gitea
|
||||||
|
@ -24,24 +25,27 @@ docker-build:
|
||||||
docker run -ti --rm -v $(CURDIR):/srv/app/src/code.gitea.io/gitea -w /srv/app/src/code.gitea.io/gitea -e TAGS="bindata $(TAGS)" webhippie/golang:edge make clean generate build
|
docker run -ti --rm -v $(CURDIR):/srv/app/src/code.gitea.io/gitea -w /srv/app/src/code.gitea.io/gitea -e TAGS="bindata $(TAGS)" webhippie/golang:edge make clean generate build
|
||||||
|
|
||||||
.PHONY: docker-cross
|
.PHONY: docker-cross
|
||||||
docker-cross : docker-setup-qemu
|
docker-cross : clean generate docker-setup-qemu
|
||||||
docker build --build-arg target=$(TARGET) --build-arg GOARCH=$(GOARCH) -f docker/Dockerfile.$(QEMU_ARCH) -t $(DOCKER_REF) .
|
# docker build --build-arg target=$(TARGET) --build-arg GOARCH=$(GOARCH) -f docker/Dockerfile.$(QEMU_ARCH) -t $(DOCKER_REF) .
|
||||||
|
docker build --build-arg target=$(TARGET) --build-arg GOARCH=$(GOARCH) --build-arg TAGS="" -f docker/Dockerfile.$(QEMU_ARCH) -t $(DOCKER_REF) .
|
||||||
#exemple TARGET=arm64v8 GOARCH=arm64 QEMU_ARCH=aarch64 make docker-cross
|
#exemple TARGET=arm64v8 GOARCH=arm64 QEMU_ARCH=aarch64 make docker-cross
|
||||||
#exemple TARGET=amd64 GOARCH=amd64 QEMU_ARCH=amd64 make docker-cross
|
#exemple TARGET=amd64 GOARCH=amd64 QEMU_ARCH=amd64 make docker-cross
|
||||||
#exemple TARGET=arm32v6 GOARCH=arm QEMU_ARCH=arm make docker-cross
|
#exemple TARGET=arm32v6 GOARCH=arm QEMU_ARCH=arm make docker-cross
|
||||||
|
#TODO make generate fail with qemu (qemu: Unsupported syscall: 0) so we run as deps in host env
|
||||||
|
#TODO seems to core dump when build with sqlite (maybe related to cgo) look at xgo to find a solution
|
||||||
|
|
||||||
.PHONY: docker-setup-qemu
|
.PHONY: docker-setup-qemu
|
||||||
docker-setup-qemu:
|
docker-setup-qemu:
|
||||||
@if [ "$(QEMU_ARCH)" != "amd64" ]; then \
|
@if [ "$(QEMU_ARCH)" != ${GOHOSTARCH} ]; then \
|
||||||
echo "Loading qemu libs for multi-arch support."; \
|
echo "Loading qemu libs for multi-arch support."; \
|
||||||
(cd docker && curl -sL https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCH}-static.tar.gz | tar xz); \
|
(cd docker && curl -sL https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCH}-static.tar.gz | tar xz); \
|
||||||
docker run --rm --privileged multiarch/qemu-user-static:register --reset; \
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset; \
|
||||||
sed "s/^#QEMU phase/COPY docker\/qemu-${QEMU_ARCH}-static* \/usr\/bin\//g" Dockerfile > docker/Dockerfile.${QEMU_ARCH}; \
|
sed "s/^#QEMU phase/COPY docker\/qemu-${QEMU_ARCH}-static* \/usr\/bin\//g" Dockerfile > docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
|
sed -i "s/make clean generate build/make build/g" docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
else cp Dockerfile docker/Dockerfile.${QEMU_ARCH}; \
|
else cp Dockerfile docker/Dockerfile.${QEMU_ARCH}; \
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
.PHONY: docker-setup-clean
|
.PHONY: docker-setup-clean
|
||||||
docker-setup-clean:
|
docker-setup-clean:
|
||||||
rm docker/qemu-*-static
|
rm -f docker/qemu-*-static
|
||||||
rm docker/Dockerfile.*
|
rm -f docker/Dockerfile.*
|
||||||
#TODO add to make clean
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user