Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 21 additions & 23 deletions builder/docker-rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ TITLE ?= $(NAME)
VERSION_ALIASES ?=
BUILD_OPTS ?=
HOST_ARCH := $(shell uname -m)
QEMU_PATCH_VERSION ?= 2.8.4
IMAGE_VOLUME_SIZE ?= 50G
IMAGE_NAME ?= $(NAME)
IMAGE_BOOTSCRIPT ?= stable
S3_FULL_URL ?= $(S3_URL)/$(FULL_NAME).tar
ADDITIONAL_ASSETS ?=
LOCAL_HTTPD_PORT ?= 80
EMBEDDED_HTTPD = (printf "HTTP/1.1 200 OK\r\nContent-type: $(3)\r\nContent-Disposition: attachment; filename=\"$(2)\"\r\nContent-Length: $(shell stat -c %s $(1))\r\nConnection: close\r\n\r\n"; cat $(1)) | nc -l -p $(4) > /dev/null &
DEFAULT_IMAGE_ARCH ?= armv7l
ARCH ?= $(HOST_ARCH)
ARCHS := amd64 x86_64 i386 arm armhf armel arm64 mips mipsel powerpc
ifeq ($(ARCH),arm)
Expand Down Expand Up @@ -87,8 +87,7 @@ ifeq ($(ARCH),powerpc)
endif
OVERLAY_DIRS := overlay overlay-common overlay-$(TARGET_UNAME_ARCH) patches patches-common patches-$(TARGET_UNAME_ARCH) overlay-image-tools
OVERLAY_FILES := $(shell for dir in $(OVERLAY_DIRS); do test -d $$dir && find $$dir -type f; done || true)
TMP_BUILD_DIR := tmp-$(TARGET_UNAME_ARCH)
BUILD_DIR := $(shell test $(TARGET_UNAME_ARCH) = $(DEFAULT_IMAGE_ARCH) && echo "." || echo $(TMP_BUILD_DIR))
BUILD_DIR := tmp-$(TARGET_UNAME_ARCH)
EXPORT_DIR ?= /tmp/build/$(TARGET_UNAME_ARCH)-$(FULL_NAME)/


Expand Down Expand Up @@ -148,7 +147,6 @@ info:
@echo "Arch:"
@echo "-----"
@echo "- HOST_ARCH $(HOST_ARCH)"
@echo "- DEFAULT_IMAGE_ARCH $(DEFAULT_IMAGE_ARCH)"
@echo "- ARCH $(ARCH)"
@echo "- TARGET_QEMU_ARCH $(TARGET_QEMU_ARCH)"
@echo "- TARGET_UNAME_ARCH $(TARGET_UNAME_ARCH)"
Expand Down Expand Up @@ -305,10 +303,14 @@ run: shell
.PHONY: re
re: rebuild

.PHONY: qemu-patch
qemu-patch: patches/usr/bin/qemu-$(TARGET_QEMU_ARCH)-static



# File-based rules
$(TMP_BUILD_DIR)/Dockerfile: Dockerfile
mkdir -p "$(TMP_BUILD_DIR)"
$(BUILD_DIR)/Dockerfile: Dockerfile
mkdir -p "$(BUILD_DIR)"
cp $< $@
for arch in $(ARCHS); do \
if [ "$$arch" != "$(TARGET_UNAME_ARCH)" ]; then \
Expand All @@ -321,29 +323,24 @@ $(TMP_BUILD_DIR)/Dockerfile: Dockerfile
sed '/#[[:space:]]*arch=$(TARGET_UNAME_ARCH)[[:space:]]*$$/s/^#//' $@.tmp > $@
mv $@ $@.tmp
sed 's/#[[:space:]]*arch=$(TARGET_UNAME_ARCH)[[:space:]]*$$//g' $@.tmp > $@
if [ "`grep ^FROM $(TMP_BUILD_DIR)/Dockerfile | wc -l`" = "2" ]; then \
if [ "`grep ^FROM $(BUILD_DIR)/Dockerfile | wc -l`" = "2" ]; then \
mv $@ $@.tmp; \
sed 0,/^FROM/d $@.tmp > $@; \
fi
rm -f $@.tmp
#cat $@


$(TMP_BUILD_DIR)/.overlays: $(OVERLAY_FILES)
mkdir -p $(TMP_BUILD_DIR)
for dir in $(OVERLAY_DIRS); do \
if [ -d "$$dir" ]; then \
rm -rf "$(TMP_BUILD_DIR)/$$dir"; \
cp -rf "$$dir" "$(TMP_BUILD_DIR)/$$dir"; \
fi \
$(BUILD_DIR)/.overlays: $(OVERLAY_FILES)
mkdir -p $(BUILD_DIR)
for dir in $(OVERLAY_DIRS); do \
if [ -d "$$dir" ]; then \
rm -rf "$(BUILD_DIR)/$$dir"; \
cp -rf "$$dir" "$(BUILD_DIR)/$$dir"; \
fi \
done
touch $@


.overlays:
touch $@


.docker-container-$(TARGET_UNAME_ARCH).built: $(BUILD_DIR)/Dockerfile $(BUILD_DIR)/.overlays $(ADDITIONAL_ASSETS)
test $(HOST_ARCH) = $(TARGET_UNAME_ARCH) || $(MAKE) setup_binfmt
@find $(BUILD_DIR) -name "*~" -delete || true
Expand Down Expand Up @@ -411,10 +408,11 @@ $(EXPORT_DIR)export.tar: .docker-container-$(TARGET_UNAME_ARCH).built


patches/usr/bin/qemu-$(TARGET_QEMU_ARCH)-static:
mkdir -p patches/usr/bin
wget https://github.com/multiarch/qemu-user-static/releases/download/v2.0.0/amd64_qemu-$(TARGET_QEMU_ARCH)-static.tar.gz
tar -xf amd64_qemu-$(TARGET_QEMU_ARCH)-static.tar.gz
rm -f amd64_qemu-$(TARGET_QEMU_ARCH)-static.tar.gz
mkdir -p patches/usr/bin/
wget https://github.com/multiarch/qemu-user-static/releases/download/v$(QEMU_PATCH_VERSION)/x86_64_qemu-$(TARGET_QEMU_ARCH)-static.tar.gz
tar -xf x86_64_qemu-$(TARGET_QEMU_ARCH)-static.tar.gz
rm -f x86_64_qemu-$(TARGET_QEMU_ARCH)-static.tar.gz
mv qemu-$(TARGET_QEMU_ARCH)-static patches/usr/bin/


.PHONY: sync-image-tools
Expand Down