forked from linkease/docker-for-android
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
160 lines (144 loc) · 6.4 KB
/
Copy pathMakefile
File metadata and controls
160 lines (144 loc) · 6.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# Docker for Android Makefile
# Version: Auto-read from VERSION file
# Read version from VERSION file
-include VERSION
export DOCKER_VERSION
export SUB_VERSION
# Variables
VERSION := $(DOCKER_VERSION).$(SUB_VERSION)
# CDN and Server URLs
# Note: CDN doesn't cache .txt files; version.txt is always fresh from CDN
CDN_URL := https://fw.kspeeder.com/binary/docker-for-android
ORIGIN_SERVER_URL := https://fw.koolcenter.com/binary/docker-for-android
# Directories
RELEASE_DIR := release
ARM64_BIN_DIR := docker/arm64_bin
X86_64_BIN_DIR := docker/x86_64_bin
DOCKER_DIR := docker
# Package names
ARM64_PACKAGE := docker-for-android-bin-$(VERSION)-arm64.tar.gz
X86_64_PACKAGE := docker-for-android-bin-$(VERSION)-x86_64.tar.gz
DOCKER_PACKAGE := docker-$(VERSION).tar.gz
VERSION_FILE := version.txt
# Targets
.PHONY: all clean build-release arm64 x86_64 docker-pack version help installer
# Default target
all: help
# Help target
help:
@echo "Docker for Android Build System"
@echo "================================"
@echo "Version: $(VERSION)"
@echo ""
@echo "Available targets:"
@echo " make build-release - Build release packages (currently arm64 only)"
@echo " make arm64 - Build arm64 package only"
@echo " make x86_64 - Build x86_64 package (not implemented yet)"
@echo " make docker-pack - Build docker folder package (shared by all architectures)"
@echo " make version - Generate version file"
@echo " make installer - Build installer for arm64 and x86_64"
@echo " make clean - Clean release directory"
@echo " make help - Show this help message"
@echo ""
@echo "CDN URL: $(CDN_URL)"
@echo "Origin Server URL: $(ORIGIN_SERVER_URL)"
# Create release directory
create-dir:
@mkdir -p $(RELEASE_DIR)
# Build arm64 package
arm64: create-dir
@echo "Building arm64 package..."
@if [ ! -d "$(ARM64_BIN_DIR)" ]; then \
echo "Error: $(ARM64_BIN_DIR) directory not found!"; \
exit 1; \
fi
@echo "Packaging $(ARM64_BIN_DIR) to $(RELEASE_DIR)/$(ARM64_PACKAGE)..."
@tar -czf $(RELEASE_DIR)/$(ARM64_PACKAGE) -C $(DOCKER_DIR) arm64_bin
@echo "Generating sha256 checksum for arm64 package..."
@cd $(RELEASE_DIR) && shasum -a 256 $(ARM64_PACKAGE) > $(ARM64_PACKAGE).sha256
@echo "arm64 package created: $(RELEASE_DIR)/$(ARM64_PACKAGE)"
@echo "SHA256: $$(cat $(RELEASE_DIR)/$(ARM64_PACKAGE).sha256)"
# Build x86_64 package (placeholder for future implementation)
x86_64: create-dir
@echo "x86_64 package build not implemented yet"
@echo "Please add x86_64_bin directory first"
# Build docker folder package (shared by all architectures)
docker-pack: create-dir
@echo "Building docker folder package..."
@if [ ! -d "$(DOCKER_DIR)" ]; then \
echo "Error: $(DOCKER_DIR) directory not found!"; \
exit 1; \
fi
@echo "Packaging $(DOCKER_DIR) to $(RELEASE_DIR)/$(DOCKER_PACKAGE)..."
@echo "Excluding arm64_bin and x86_64_bin directories..."
@tar -czf $(RELEASE_DIR)/$(DOCKER_PACKAGE) --exclude='arm64_bin' --exclude='x86_64_bin' $(DOCKER_DIR)
@echo "Generating sha256 checksum for docker package..."
@cd $(RELEASE_DIR) && shasum -a 256 $(DOCKER_PACKAGE) > $(DOCKER_PACKAGE).sha256
@echo "docker package created: $(RELEASE_DIR)/$(DOCKER_PACKAGE)"
@echo "SHA256: $$(cat $(RELEASE_DIR)/$(DOCKER_PACKAGE).sha256)"
# Generate version file
version: create-dir
@echo "Generating version file..."
@echo "# Docker for Android Version File" > $(RELEASE_DIR)/$(VERSION_FILE)
@echo "# Generated on $$(date '+%Y-%m-%d %H:%M:%S')" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "# This file is not cached by CDN and always returns fresh content" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "VERSION=$(VERSION)" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "# SHA256 checksums for packages" >> $(RELEASE_DIR)/$(VERSION_FILE)
@if [ -f "$(RELEASE_DIR)/$(DOCKER_PACKAGE).sha256" ]; then \
echo "DOCKER_SHA256=$$(cat $(RELEASE_DIR)/$(DOCKER_PACKAGE).sha256 | cut -d' ' -f1)" >> $(RELEASE_DIR)/$(VERSION_FILE); \
else \
echo "DOCKER_SHA256=" >> $(RELEASE_DIR)/$(VERSION_FILE); \
fi
@if [ -f "$(RELEASE_DIR)/$(ARM64_PACKAGE).sha256" ]; then \
echo "BIN_ARM64_SHA256=$$(cat $(RELEASE_DIR)/$(ARM64_PACKAGE).sha256 | cut -d' ' -f1)" >> $(RELEASE_DIR)/$(VERSION_FILE); \
else \
echo "BIN_ARM64_SHA256=" >> $(RELEASE_DIR)/$(VERSION_FILE); \
fi
@if [ -f "$(RELEASE_DIR)/$(X86_64_PACKAGE).sha256" ]; then \
echo "BIN_X86_64_SHA256=$$(cat $(RELEASE_DIR)/$(X86_64_PACKAGE).sha256 | cut -d' ' -f1)" >> $(RELEASE_DIR)/$(VERSION_FILE); \
else \
echo "BIN_X86_64_SHA256=" >> $(RELEASE_DIR)/$(VERSION_FILE); \
fi
@echo "" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "# Download URLs" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "# CDN URL: $(CDN_URL)" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "# Origin Server: $(ORIGIN_SERVER_URL)" >> $(RELEASE_DIR)/$(VERSION_FILE)
@echo "Version file created: $(RELEASE_DIR)/$(VERSION_FILE)"
@echo ""
@cat $(RELEASE_DIR)/$(VERSION_FILE)
# Build full release
build-release: clean arm64 docker-pack version installer
@echo ""
@echo "=========================================="
@echo "Release build completed!"
@echo "=========================================="
@echo "Version: $(VERSION)"
@echo "Output directory: $(RELEASE_DIR)/"
@echo ""
@echo "Files generated:"
@ls -lh $(RELEASE_DIR)/
@echo ""
@echo "Next steps:"
@echo "1. Upload files to server: $(ORIGIN_SERVER_URL)"
@echo "2. Sync to CDN (except version file)"
@echo "3. Upload version file to server (no CDN cache)"
# Build installer binaries
installer: create-dir
@echo "Building installer binaries..."
@echo "Building arm64 installer..."
@cd installer && CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o ../$(RELEASE_DIR)/install-docker-arm64 .
@echo "✓ arm64 installer built: $(RELEASE_DIR)/install-docker-arm64"
@echo "Building x86_64 installer..."
@cd installer && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ../$(RELEASE_DIR)/install-docker-x86_64 .
@echo "✓ x86_64 installer built: $(RELEASE_DIR)/install-docker-x86_64"
@echo "Generating sha256 checksums for installers..."
@cd $(RELEASE_DIR) && shasum -a 256 install-docker-arm64 > install-docker-arm64.sha256
@cd $(RELEASE_DIR) && shasum -a 256 install-docker-x86_64 > install-docker-x86_64.sha256
@echo "✓ Installer binaries created successfully"
# Clean release directory
clean:
@echo "Cleaning release directory..."
@rm -rf $(RELEASE_DIR)
@echo "Release directory cleaned."