Makefile
3.51 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
OBSPROJECT = isv:spb:devel
COPR_PROJECT = softwarepublico/v5
LOCAL_BUILD_DIR = $(CURDIR)/build
# Vagrant environment does not accept links from/to shared folder
ifeq "/vagrant" "$(shell ls -1d /vagrant 2>/dev/null)"
LOCAL_BUILD_DIR = /home/vagrant/rpmbuild
endif
#############################################################################
packages = $(shell basename -s .spec */*.spec)
obsdir = .obs
-include .config.mk
all:
@echo "Usage:"
@echo
@echo '$$ make $${pkg}-build builds package $${pkg} locally'
@echo '$$ make $${pkg}-build-src builds SRPM package $${pkg} locally'
@echo '$$ make $${pkg}-upload uploads package $${pkg} to Copr'
@echo
@echo '$${pkg} can be one of: $(packages)'
@echo
@echo 'Operations on all packages:'
@echo
@echo '$$ make build-all builds all packages locally'
@echo
@echo
@echo 'Working with OBS (deprecated):'
@echo
@echo '$$ make $${pkg}-checkout-obs checkout $${pkg}'
@echo '$$ make $${pkg}-upload-obs uploads package $${pkg}'
@echo '$$ make $${pkg}-diff-obs diff from OBS to git for package $${pkg}'
@echo
@echo Use OBSPROJECT=project:name to control where to upload to.
@echo '(currently: $(OBSPROJECT))'. Example:
@echo
@echo \ \ \ \ $$ make colab-upload-obs OBSPROJECT=isv:spb:v3
@echo
@echo 'Operations on all packages:'
@echo
@echo '$$ make diff-obs diff of all packages from OBS to git'
@echo '$$ make status-obs|st-obs diffstat of all packages from OBS to git'
@echo '$$ make checkout-all-obs checks out all packages from OBS'
# Local
build_packages = $(patsubst %, %-build, $(packages))
build_src_packages = $(patsubst %, %-build-src, $(packages))
# Copr
upload_packages = $(patsubst %, %-upload, $(packages))
# OBS
checkout_packages_obs = $(patsubst %, %-checkout-obs, $(packages))
upload_packages_obs = $(patsubst %, %-upload-obs, $(packages))
diff_packages_obs = $(patsubst %, %-diff-obs, $(packages))
.PHONY: $(build_packages) $(checkout_packages_obs) $(upload_packages_obs) $(diff_packages_obs) copr-cli
### Targets
build-all: $(build_packages)
$(build_packages): %-build : %
mkdir -p $(LOCAL_BUILD_DIR)/SOURCES
cp $*/*.tar.* $(LOCAL_BUILD_DIR)/SOURCES/
cp $*/*.patch $(LOCAL_BUILD_DIR)/SOURCES/ || true
cd $* && $(BUILD_PREFIX) rpmbuild --define "_topdir $(LOCAL_BUILD_DIR)" -bb $*.spec
$(build_src_packages): %-build-src : %
mkdir -p $(LOCAL_BUILD_DIR)/SOURCES
cp $*/*.tar.* $(LOCAL_BUILD_DIR)/SOURCES/
cp $*/*.patch $(LOCAL_BUILD_DIR)/SOURCES/ || true
rm -f $(LOCAL_BUILD_DIR)/SRPMS/$*-*.src.rpm
cd $* && $(BUILD_PREFIX) rpmbuild --define "_topdir $(LOCAL_BUILD_DIR)" -bs $*.spec --nodeps
$(upload_packages): %-upload : %-build-src % copr-cli
copr-cli build $(COPR_PROJECT) $(LOCAL_BUILD_DIR)/SRPMS/$*-*.src.rpm --nowait
### OBS targets (deprecated)
checkout-all-obs: $(checkout_packages_obs)
$(checkout_packages_obs): %-checkout-obs : %
mkdir -p $(obsdir)
[ -d $(obsdir)/$(OBSPROJECT)/$* ] && \
(cd $(obsdir)/$(OBSPROJECT)/$* && osc update) || \
(cd $(obsdir) && osc checkout $(OBSPROJECT) $*)
$(upload_packages_obs): %-upload-obs : %-checkout-obs
$(MAKE) $*-diff-obs
@printf "Confirm upload? [y/N] "; read confirm; test "$$confirm" = y -o "$$confirm" = Y
cp $*/* $(obsdir)/$(OBSPROJECT)/$*
(cd $(obsdir)/$(OBSPROJECT)/$*; osc add *; osc commit -m "update $*")
$(diff_packages_obs): %-diff-obs : %
@git diff --no-index $(obsdir)/$(OBSPROJECT)/$*/$*.spec $*/$*.spec || true
diff-obs: $(diff_packages_obs)
status-obs st-obs:
@$(MAKE) diff | diffstat -C
clean:
rm -rf */*.tar.*
rm -rf build/
rm -rf .virtualenv/