mirror of
https://github.com/teddysun/across.git
synced 2025-01-19 06:19:35 +08:00
6cdb88d529
Signed-off-by: Teddysun <i@teddysun.com>
102 lines
2.9 KiB
Makefile
102 lines
2.9 KiB
Makefile
ARCH=$(shell uname -m)
|
|
VERSION?=1.8.11
|
|
GO_VERSION:=1.22.2
|
|
SHELL:=/bin/bash
|
|
GO_BASE_IMAGE=golang
|
|
GO_IMAGE?=$(GO_BASE_IMAGE):$(GO_VERSION)-bookworm
|
|
EPOCH?=
|
|
REPO?=https://github.com/xtls/xray-core.git
|
|
REF?=v1.8.11
|
|
CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown
|
|
|
|
ifdef BUILD_IMAGE
|
|
BUILD_IMAGE_FLAG=--build-arg $(BUILD_IMAGE)
|
|
endif
|
|
|
|
COMMON_FILES=common
|
|
BUILD?=DOCKER_BUILDKIT=1 \
|
|
docker build \
|
|
$(BUILD_IMAGE_FLAG) \
|
|
--build-arg GO_IMAGE=$(GO_IMAGE) \
|
|
--build-arg COMMON_FILES=$(COMMON_FILES) \
|
|
-t debbuild-$@/$(ARCH) \
|
|
-f $@/Dockerfile \
|
|
.
|
|
|
|
# Additional flags may be necessary at some point
|
|
RUN_FLAGS=
|
|
RUN?=docker run --rm -h buildbot \
|
|
-e PLATFORM \
|
|
-e EPOCH='$(EPOCH)' \
|
|
-e DEB_VERSION=$(VERSION) \
|
|
-e VERSION=$(VERSION) \
|
|
-v $(CURDIR)/debbuild/$@:/build \
|
|
$(RUN_FLAGS) \
|
|
debbuild-$@/$(ARCH)
|
|
|
|
DEBIAN_VERSIONS ?= debian-buster debian-bullseye debian-bookworm
|
|
UBUNTU_VERSIONS ?= ubuntu-focal ubuntu-jammy ubuntu-noble
|
|
DISTROS := $(DEBIAN_VERSIONS) $(UBUNTU_VERSIONS)
|
|
|
|
# Taken from: https://www.cmcrossroads.com/article/printing-value-makefile-variable
|
|
print-% : ; @echo $($*)
|
|
|
|
.PHONY: help
|
|
help: ## show make targets
|
|
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
|
|
.PHONY: checkout-src
|
|
checkout-src: src/github.com/xtls/xray
|
|
./checkout.sh src/github.com/xtls/xray "$(REF)"
|
|
@curl -sSLo src/github.com/xtls/xray/geoip.dat https://github.com/v2fly/geoip/releases/latest/download/geoip.dat
|
|
@curl -sSLo src/github.com/xtls/xray/geosite.dat https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat
|
|
|
|
src/github.com/xtls/xray:
|
|
git init $@
|
|
git -C $@ remote add origin "$(REPO)"
|
|
|
|
.PHONY: checkout
|
|
checkout: checkout-src ## checkout source at the given reference(s)
|
|
|
|
.PHONY: clean
|
|
clean: ## remove build artifacts
|
|
[ ! -d debbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild
|
|
$(RM) -r debbuild
|
|
[ ! -d sources ] || $(CHOWN) -R $(shell id -u):$(shell id -g) sources
|
|
$(RM) -r sources
|
|
-docker builder prune -f --filter until=24h
|
|
|
|
.PHONY: deb
|
|
deb: ubuntu debian ## build all deb packages
|
|
|
|
.PHONY: ubuntu
|
|
ubuntu: $(UBUNTU_VERSIONS) ## build all ubuntu deb packages
|
|
|
|
.PHONY: debian
|
|
debian: $(DEBIAN_VERSIONS) ## build all debian deb packages
|
|
|
|
.PHONY: $(DISTROS)
|
|
$(DISTROS): sources
|
|
@echo "== Building packages for $@ =="
|
|
mkdir -p "debbuild/$@"
|
|
$(BUILD)
|
|
$(RUN)
|
|
$(CHOWN) -R $(shell id -u):$(shell id -g) "debbuild/$@"
|
|
|
|
.PHONY: sources
|
|
sources: sources/xray.tgz
|
|
|
|
sources/xray.tgz:
|
|
mkdir -p $(@D)
|
|
docker run --rm -w /v \
|
|
-v $(realpath $(CURDIR)/src/github.com/xtls/xray):/xray \
|
|
-v $(CURDIR)/$(@D):/v \
|
|
alpine \
|
|
tar -C / -c -z -f /v/xray.tgz --exclude .git xray
|
|
|
|
# See ARCHES in common.mk. Could not figure out how to match both distro and arch.
|
|
BUNDLES:=$(addsuffix .tar.gz,$(addprefix debbuild/bundles-%-,$(ARCHES)))
|
|
|
|
$(BUNDLES): %
|
|
tar czf $@ --transform="s|^debbuild/\(.*\)|bundles/$(VERSION)/build-deb/\1|" debbuild/$*
|