forked from nginx/unit
-
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.
- Loading branch information
Showing
6 changed files
with
168 additions
and
0 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
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,140 @@ | ||
all: install | ||
|
||
TOPSRC := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) | ||
SRC := $(TOPSRC)/src | ||
TARBALLS := $(TOPSRC)/tarballs | ||
VPATH := $(TARBALLS) | ||
PREFIX = $(TOPSRC)/local | ||
PREFIX := $(abspath $(PREFIX)) | ||
|
||
PKGS_ALL := $(patsubst $(SRC)/%/Makefile,%,$(wildcard $(SRC)/*/Makefile)) | ||
|
||
# Common download locations | ||
CONTRIB_NGINX := https://packages.nginx.org/contrib | ||
|
||
# | ||
# Tools | ||
# | ||
NPROC := $(shell getconf _NPROCESSORS_ONLN) | ||
_SMP_MFLAGS := -j$(NPROC) | ||
|
||
ifndef GIT | ||
ifeq ($(shell git --version >/dev/null 2>&1 || echo FAIL),) | ||
GIT = git | ||
endif | ||
endif | ||
GIT ?= $(error git not found) | ||
|
||
ifeq ($(shell curl --version >/dev/null 2>&1 || echo FAIL),) | ||
download = curl -f -L -- "$(1)" > "$@" | ||
else ifeq ($(shell wget --version >/dev/null 2>&1 || echo FAIL),) | ||
download = (rm -f $@.tmp && \ | ||
wget --passive -c -p -O $@.tmp "$(1)" && \ | ||
touch $@.tmp && \ | ||
mv $@.tmp $@ ) | ||
else ifeq ($(which fetch >/dev/null 2>&1 || echo FAIL),) | ||
download = (rm -f $@.tmp && \ | ||
fetch -p -o $@.tmp "$(1)" && \ | ||
touch $@.tmp && \ | ||
mv $@.tmp $@) | ||
else | ||
download = $(error Neither curl nor wget found) | ||
endif | ||
|
||
download_pkg = $(call download,$(CONTRIB_NGINX)/$(2)/$(lastword $(subst /, ,$(@)))) || \ | ||
( $(call download,$(1)) && echo "Please upload $(lastword $(subst /, ,$(@))) to $(CONTRIB_NGINX)" ) | ||
|
||
ifeq ($(shell which xz >/dev/null 2>&1 || echo FAIL),) | ||
XZ = xz | ||
else | ||
XZ ?= $(error XZ (LZMA) compressor not found) | ||
endif | ||
|
||
ifeq ($(shell sha512sum --version >/dev/null 2>&1 || echo FAIL),) | ||
SHA512SUM = sha512sum --check | ||
else ifeq ($(shell shasum --version >/dev/null 2>&1 || echo FAIL),) | ||
SHA512SUM = shasum -a 512 --check | ||
else ifeq ($(shell openssl version >/dev/null 2>&1 || echo FAIL),) | ||
SHA512SUM = openssl dgst -sha512 | ||
else | ||
SHA512SUM = $(error SHA-512 checksumming not found) | ||
endif | ||
|
||
# | ||
# Common helpers | ||
# | ||
download_git = \ | ||
rm -Rf -- "$(@:.tar.xz=)" && \ | ||
$(GIT) init --bare "$(@:.tar.xz=)" && \ | ||
(cd "$(@:.tar.xz=)" && \ | ||
$(GIT) remote add origin "$(1)" && \ | ||
$(GIT) fetch origin "$(2)") && \ | ||
(cd "$(@:.tar.xz=)" && \ | ||
$(GIT) archive --prefix="$(notdir $(@:.tar.xz=))/" \ | ||
--format=tar "$(3)") > "$(@:.xz=)" && \ | ||
echo "$(3) $(@)" > "$(@:.tar.xz=.githash)" && \ | ||
rm -Rf -- "$(@:.tar.xz=)" && \ | ||
$(XZ) --stdout "$(@:.xz=)" > "$@.tmp" && \ | ||
rm -f "$(@:.xz=)" && \ | ||
mv -f -- "$@.tmp" "$@" | ||
check_githash = \ | ||
h=`sed -e "s,^\([0-9a-fA-F]\{40\}\) .*/$(notdir $<),\1,g" \ | ||
< "$(<:.tar.xz=.githash)"` && \ | ||
test "$$h" = "$1" | ||
|
||
checksum = \ | ||
$(foreach f,$(filter $(TARBALLS)/%,$^), \ | ||
grep -- " $(f:$(TARBALLS)/%=%)$$" \ | ||
"$(SRC)/$(patsubst $(3)%,%,$@)/$(2)SUMS" |) \ | ||
(cd $(TARBALLS) && $(1)) | ||
CHECK_SHA512 = $(call checksum,$(SHA512SUM),SHA512,.sum-) | ||
UNPACK = $(RM) -R $@ \ | ||
$(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzfo $(f)) \ | ||
$(foreach f,$(filter %.tar.bz2,$^), && tar xvjfo $(f)) \ | ||
$(foreach f,$(filter %.tar.xz,$^), && tar xvJfo $(f)) \ | ||
$(foreach f,$(filter %.zip,$^), && unzip $(f)) | ||
UNPACK_DIR = $(patsubst %.tar,%,$(basename $(notdir $<))) | ||
APPLY = (cd $(UNPACK_DIR) && patch -fp1) < | ||
MOVE = mv $(UNPACK_DIR) $@ && touch $@ | ||
|
||
# Per-package build rules | ||
include $(SRC)/*/Makefile | ||
|
||
# Targets | ||
PKGS_DEPS := $(sort $(foreach p,$(PKGS),$(DEPS_$(p)))) | ||
|
||
fetch: $(PKGS:%=.sum-%) | ||
install: $(PKGS:%=.%) | ||
|
||
clean: | ||
-$(RM) $(foreach p,$(PKGS),.$(p) .sum-$(p) .dep-$(p)) | ||
-$(RM) -R $(foreach p,$(PKGS),$(p)) | ||
-$(RM) -R "$(PREFIX)" | ||
-$(RM) $(TARBALLS)/*.* | ||
|
||
list: | ||
@echo Packages: | ||
@echo ' $(PKGS)' | tr " " "\n" | sort | tr "\n" " " |fmt | ||
@echo Depended-on packages: | ||
@echo ' $(PKGS_DEPS)' | tr " " "\n" | sort | tr "\n" " " |fmt | ||
|
||
.PHONY: all fetch install clean list | ||
|
||
# Default pattern rules | ||
.sum-%: $(SRC)/%/SHA512SUMS | ||
$(CHECK_SHA512) | ||
touch $@ | ||
|
||
.sum-%: | ||
$(error Download and check target not defined for $*) | ||
|
||
# Real dependency on missing packages | ||
$(patsubst %,.dep-%,$(PKGS)): .dep-%: .% | ||
touch -r $< $@ | ||
|
||
.SECONDEXPANSION: | ||
|
||
# Dependency propagation (convert 'DEPS_foo = bar' to '.foo: .bar') | ||
$(foreach p,$(PKGS),.$(p)): .%: $$(foreach d,$$(DEPS_$$*),.dep-$$(d)) | ||
|
||
.DELETE_ON_ERROR: |
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,19 @@ | ||
# njs | ||
|
||
include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/version | ||
NJS_URL := https://hg.nginx.org/njs/archive/$(NJS_VERSION).tar.gz | ||
|
||
PKGS += njs | ||
|
||
$(TARBALLS)/njs-$(NJS_VERSION).tar.gz: | ||
$(call download_pkg,$(NJS_URL),njs) | ||
|
||
.sum-njs: njs-$(NJS_VERSION).tar.gz | ||
|
||
njs: njs-$(NJS_VERSION).tar.gz .sum-njs | ||
$(UNPACK) | ||
$(MOVE) | ||
|
||
.njs: njs | ||
cd $< && ./configure && $(MAKE) libnjs | ||
touch $@ |
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 @@ | ||
dc73029e7b570a7fbc94e90deb1e17c9a3d85072dc0e060f11dd96bd173e11b7c823c57115369d3c68af7acd97fabe619b70dfd73280694f8b5dc8b7929d850b njs-0.7.9.tar.gz |
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 @@ | ||
NJS_VERSION := 0.7.9 |
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,3 @@ | ||
syntax:glob | ||
*.tar.* | ||
*.githash |