-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (66 loc) · 2.68 KB
/
Makefile
File metadata and controls
79 lines (66 loc) · 2.68 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
HOME := $(abspath $(shell pwd))
MAINVERSION ?= 3.3
LUA_VERSION ?= 5.5.0
USE_LUA ?= 0
NO_SUDO ?= 0
USE_PROMETHEUS ?= 0
RELEASE ?= 1
# Автоматическое определение последней версии HAProxy с официального сайта
VERSION := $(shell curl -s https://www.haproxy.org/download/${MAINVERSION}/src/ | \
grep -oP 'haproxy-${MAINVERSION}\.[0-9]+\.tar\.gz' | \
sort -rV | head -1 | sed 's/haproxy-\(.*\)\.tar\.gz/\1/')
VERSION := $(if $(VERSION),$(VERSION),${MAINVERSION}.0)
# Определение SUDO
SUDO := $(if $(filter 1,$(NO_SUDO)),,sudo)
# Основные зависимости
BASE_DEPS := pcre-devel pcre2-devel make gcc openssl-devel rpm-build systemd-devel curl sed zlib-devel
LUA_DEPS := readline-devel
# Этапы сборки
BUILD_STAGES := install_prereq clean download-upstream
ifeq ($(USE_LUA),1)
BUILD_STAGES += build_lua
endif
.PHONY: all install_prereq clean download-upstream build_lua build-docker run-docker build
all: build
install_prereq:
$(SUDO) dnf install -y $(BASE_DEPS)
clean:
$(SUDO) rm -f ./SOURCES/haproxy-${VERSION}.tar.gz
$(SUDO) rm -rf ./lua-${LUA_VERSION}*
$(SUDO) rm -rf ./rpmbuild
$(SUDO) mkdir -p ./rpmbuild/{SPECS,SOURCES,RPMS,SRPMS}
download-upstream:
$(SUDO) curl -L https://www.haproxy.org/download/${MAINVERSION}/src/haproxy-${VERSION}.tar.gz \
-o ./SOURCES/haproxy-${VERSION}.tar.gz
build_lua:
$(SUDO) dnf install -y $(LUA_DEPS)
$(SUDO) curl -L https://www.lua.org/ftp/lua-${LUA_VERSION}.tar.gz -o lua-${LUA_VERSION}.tar.gz
$(SUDO) tar xzf lua-${LUA_VERSION}.tar.gz
cd lua-${LUA_VERSION} && \
$(SUDO) $(MAKE) clean && \
$(SUDO) $(MAKE) MYCFLAGS=-fPIC linux test && \
$(SUDO) $(MAKE) install
$(SUDO) rm -f lua-${LUA_VERSION}.tar.gz
build-docker:
docker build -t haproxy-rpm-builder:latest -f Dockerfile .
run-docker: build-docker
mkdir -p RPMS
docker run -e USE_LUA=$(USE_LUA) \
-e USE_PROMETHEUS=$(USE_PROMETHEUS) \
-e RELEASE=$(RELEASE) \
--volume $(HOME)/RPMS:/RPMS \
--rm haproxy-rpm-builder:latest
build: $(BUILD_STAGES)
$(SUDO) cp -r ./SPECS/* ./rpmbuild/SPECS/ 2>/dev/null || true
$(SUDO) cp -r ./SOURCES/* ./rpmbuild/SOURCES/ 2>/dev/null || true
$(SUDO) rpmbuild -ba SPECS/haproxy.spec \
--define "mainversion $(MAINVERSION)" \
--define "version $(VERSION)" \
--define "release $(RELEASE)" \
--define "_topdir $(HOME)/rpmbuild" \
--define "_builddir %{_topdir}/BUILD" \
--define "_buildroot %{_topdir}/BUILDROOT" \
--define "_rpmdir %{_topdir}/RPMS" \
--define "_srcrpmdir %{_topdir}/SRPMS" \
--define "_use_lua $(USE_LUA)" \
--define "_use_prometheus $(USE_PROMETHEUS)"