2
2
#
3
3
4
4
NAME =mongodb_consistent_backup
5
+ BIN_NAME? =mongodb-consistent-backup
5
6
VERSION =$(shell cat VERSION | cut -d- -f1)
7
+ GIT_COMMIT? =$(shell git show 2>/dev/null | awk 'NR==1{print $$2}')
6
8
PREFIX? =/usr/local
9
+ ARCH? =x86_64
7
10
BASEDIR? =$(DESTDIR )$(PREFIX )
8
11
BINDIR? =$(BASEDIR ) /bin
9
12
SHAREDIR? =$(BASEDIR ) /share
10
13
DOCKER_TAG? ="$(NAME ) :$(VERSION ) "
14
+ DOCKER_BASE_IMAGE? =$(shell awk '/FROM/{print $$2}' Dockerfile)
15
+ MAKE_DIR =$(shell dirname $(abspath $(lastword $(MAKEFILE_LIST ) ) ) )
11
16
17
+ all : bin/$(BIN_NAME )
12
18
13
- all : bin/mongodb-consistent-backup
19
+ bin/$(BIN_NAME ) : setup.py requirements.txt README.rst VERSION scripts/build.sh $(NAME ) /* .py $(NAME ) /* /* .py $(NAME ) /* /* /* .py
20
+ BIN_NAME=$(BIN_NAME ) GIT_COMMIT=$(GIT_COMMIT ) PYTHON_BIN=$(PYTHON_BIN ) VIRTUALENV_BIN=$(VIRTUALENV_BIN ) bash scripts/build.sh
14
21
15
- bin/mongodb-consistent-backup : setup.py requirements.txt README.rst VERSION scripts/build.sh $(NAME ) /* .py $(NAME ) /* /* .py $(NAME ) /* /* /* .py
16
- PYTHON_BIN=$(PYTHON_BIN ) VIRTUALENV_BIN=$(VIRTUALENV_BIN ) bash scripts/build.sh
17
-
18
- install : bin/mongodb-consistent-backup
22
+ install : bin/$(BIN_NAME )
19
23
mkdir -p $(BINDIR ) $(SHAREDIR ) /$(NAME ) || true
20
- install -m 0755 bin/mongodb-consistent-backup $(BINDIR ) /mongodb-consistent-backup
24
+ install -m 0755 bin/$( BIN_NAME ) $(BINDIR ) /mongodb-consistent-backup
21
25
install -m 0644 conf/mongodb-consistent-backup.example.conf $(SHAREDIR ) /$(NAME ) /example.conf
22
26
install -m 0644 LICENSE $(SHAREDIR ) /$(NAME ) /LICENSE
23
27
install -m 0644 README.rst $(SHAREDIR ) /$(NAME ) /README.rst
@@ -26,21 +30,90 @@ flake8:
26
30
# Ignore long-lines and space-aligned = and : for now
27
31
flake8 --ignore E221,E241,E501 $(PWD ) /$(NAME )
28
32
33
+ rpm : bin/$(BIN_NAME )
34
+ mkdir -p $(MAKE_DIR ) /build/rpm/SOURCES
35
+ cp -f $(MAKE_DIR ) /{LICENSE,README.rst} build/rpm/SOURCES
36
+ cp -f $(MAKE_DIR ) /bin/$(BIN_NAME ) build/rpm/SOURCES/mongodb-consistent-backup
37
+ cp -f $(MAKE_DIR ) /conf/mongodb-consistent-backup.example.conf build/rpm/SOURCES/mongodb-consistent-backup.conf
38
+ rpmbuild -D " _topdir $( MAKE_DIR) /build/rpm" -D " version $( VERSION) " -bb $(MAKE_DIR ) /scripts/$(NAME ) .spec
39
+
29
40
uninstall :
30
41
rm -f $(BINDIR ) /mongodb-consistent-backup
31
42
rm -rf $(SHAREDIR ) /$(NAME )
32
43
33
- rpm : bin/mongodb-consistent-backup
34
- rm -rf build/rpm 2> /dev/null || true
35
- mkdir -p build/rpm/SOURCES
36
- cp -f $(PWD ) /{LICENSE,README.rst} build/rpm/SOURCES
37
- cp -f $(PWD ) /bin/mongodb-consistent-backup build/rpm/SOURCES/mongodb-consistent-backup
38
- cp -f $(PWD ) /conf/mongodb-consistent-backup.example.conf build/rpm/SOURCES/mongodb-consistent-backup.conf
39
- rpmbuild -D " _topdir $( PWD) /build/rpm" -D " version $( VERSION) " -bb scripts/$(NAME ) .spec
44
+ # Build CentOS7 RPM (in Docker)
45
+ build/rpm/RPMS/$(ARCH ) /$(NAME ) -$(VERSION ) -1.el7.centos.$(ARCH ) .rpm :
46
+ mkdir -p $(MAKE_DIR ) /build/rpm/RPMS/$(ARCH )
47
+ docker run --rm \
48
+ -v " $( MAKE_DIR) /bin:/src/bin:Z" \
49
+ -v " $( MAKE_DIR) /conf:/src/conf:Z" \
50
+ -v " $( MAKE_DIR) /mongodb_consistent_backup:/src/mongodb_consistent_backup:Z" \
51
+ -v " $( MAKE_DIR) /scripts:/src/scripts:Z" \
52
+ -v " $( MAKE_DIR) /tmp/pip:/src/tmp/pip:Z" \
53
+ -v " $( MAKE_DIR) /setup.py:/src/setup.py:Z" \
54
+ -v " $( MAKE_DIR) /requirements.txt:/src/requirements.txt:Z" \
55
+ -v " $( MAKE_DIR) /Makefile:/src/Makefile:Z" \
56
+ -v " $( MAKE_DIR) /README.rst:/src/README.rst:Z" \
57
+ -v " $( MAKE_DIR) /LICENSE:/src/LICENSE:Z" \
58
+ -v " $( MAKE_DIR) /VERSION:/src/VERSION:Z" \
59
+ -v " $( MAKE_DIR) /build/rpm/RPMS/$( ARCH) :/src/build/rpm/RPMS/$( ARCH) :Z" \
60
+ -it centos:centos7 \
61
+ /bin/bash -c " yum install -y python-devel python-virtualenv gcc make libffi-devel openssl-devel rpm-build && \
62
+ make -C /src GIT_COMMIT=$(GIT_COMMIT ) BIN_NAME=mongodb-consistent-backup.el7.centos.$(ARCH ) rpm && \
63
+ /src/bin/mongodb-consistent-backup.el7.centos.$(ARCH ) --version"
64
+
65
+ centos7 : build/rpm/RPMS/$(ARCH ) /$(NAME ) -$(VERSION ) -1.el7.centos.$(ARCH ) .rpm
66
+
67
+ # Build Debian8 Binary (in Docker - .deb package soon!)
68
+ bin/mongodb-consistent-backup.debian8.$(ARCH ) :
69
+ docker run --rm \
70
+ -v " $( MAKE_DIR) /bin:/src/bin:Z" \
71
+ -v " $( MAKE_DIR) /conf:/src/conf:Z" \
72
+ -v " $( MAKE_DIR) /mongodb_consistent_backup:/src/mongodb_consistent_backup:Z" \
73
+ -v " $( MAKE_DIR) /scripts:/src/scripts:Z" \
74
+ -v " $( MAKE_DIR) /tmp/pip:/src/tmp/pip:Z" \
75
+ -v " $( MAKE_DIR) /setup.py:/src/setup.py:Z" \
76
+ -v " $( MAKE_DIR) /requirements.txt:/src/requirements.txt:Z" \
77
+ -v " $( MAKE_DIR) /Makefile:/src/Makefile:Z" \
78
+ -v " $( MAKE_DIR) /README.rst:/src/README.rst:Z" \
79
+ -v " $( MAKE_DIR) /LICENSE:/src/LICENSE:Z" \
80
+ -v " $( MAKE_DIR) /VERSION:/src/VERSION:Z" \
81
+ -it debian:jessie \
82
+ /bin/bash -c " apt-get update && apt-get install -y python2.7-minimal python2.7-dev python-virtualenv gcc make libffi-dev libssl-dev && \
83
+ make -C /src GIT_COMMIT=$(GIT_COMMIT ) BIN_NAME=mongodb-consistent-backup.debian8.$(ARCH ) .tmp && \
84
+ mv -vf /src/bin/mongodb-consistent-backup.debian8.$(ARCH ) .tmp /src/bin/mongodb-consistent-backup.debian8.$(ARCH ) && \
85
+ /src/bin/mongodb-consistent-backup.debian8.$(ARCH ) --version"
40
86
41
- docker : bin/mongodb-consistent-backup
42
- docker build --no-cache --tag $(DOCKER_TAG ) --build-arg " RELEASE=$( VERSION) " .
87
+ debian8 : bin/mongodb-consistent-backup.debian8.$(ARCH )
88
+
89
+ # Build Debian9 Binary (in Docker - .deb package soon!)
90
+ bin/mongodb-consistent-backup.debian9.$(ARCH ) :
91
+ docker run --rm \
92
+ -v " $( MAKE_DIR) /bin:/src/bin:Z" \
93
+ -v " $( MAKE_DIR) /conf:/src/conf:Z" \
94
+ -v " $( MAKE_DIR) /mongodb_consistent_backup:/src/mongodb_consistent_backup:Z" \
95
+ -v " $( MAKE_DIR) /scripts:/src/scripts:Z" \
96
+ -v " $( MAKE_DIR) /tmp/pip:/src/tmp/pip:Z" \
97
+ -v " $( MAKE_DIR) /setup.py:/src/setup.py:Z" \
98
+ -v " $( MAKE_DIR) /requirements.txt:/src/requirements.txt:Z" \
99
+ -v " $( MAKE_DIR) /Makefile:/src/Makefile:Z" \
100
+ -v " $( MAKE_DIR) /README.rst:/src/README.rst:Z" \
101
+ -v " $( MAKE_DIR) /LICENSE:/src/LICENSE:Z" \
102
+ -v " $( MAKE_DIR) /VERSION:/src/VERSION:Z" \
103
+ -it debian:stretch \
104
+ /bin/bash -c " apt-get update && apt-get install -y python2.7-minimal python2.7-dev python-virtualenv gcc make libffi-dev libssl-dev && \
105
+ make -C /src GIT_COMMIT=$(GIT_COMMIT ) BIN_NAME=mongodb-consistent-backup.debian9.$(ARCH ) .tmp && \
106
+ mv -vf /src/bin/mongodb-consistent-backup.debian9.$(ARCH ) .tmp /src/bin/mongodb-consistent-backup.debian9.$(ARCH ) && \
107
+ /src/bin/mongodb-consistent-backup.debian9.$(ARCH ) --version"
108
+
109
+ debian9 : bin/mongodb-consistent-backup.debian9.$(ARCH )
110
+
111
+ docker : build/rpm/RPMS/$(ARCH ) /$(NAME ) -$(VERSION ) -1.el7.centos.$(ARCH ) .rpm
112
+ docker build --no-cache --tag $(DOCKER_TAG ) .
43
113
docker tag $(DOCKER_TAG ) $(NAME ) :latest
114
+ docker run --rm -it $(DOCKER_TAG ) --version
115
+
116
+ release : centos7 debian8 debian9 docker
44
117
45
118
clean :
46
119
rm -rf bin build $(NAME ) .egg-info tmp 2> /dev/null
0 commit comments