-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
executable file
·97 lines (77 loc) · 3.79 KB
/
Makefile
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
#!/usr/bin/make -f
# -*- makefile -*-
####################################################################################################
# VARIABLES: SHELL
####################################################################################################
export SHELL=/bin/bash
####################################################################################################
# FUNCTIONS: PERMISSIONS
####################################################################################################
define assert_is_superuser
ifneq ("$(shell id -u)","0")
$$(error Must be root to execute the $(1) Make target)
endif
endef
####################################################################################################
# VARIABLES: PACKAGE
####################################################################################################
PKG_NAME=$(shell dpkg-parsechangelog -c 0 -S "Source")
PKG_VERSION=$(shell dpkg-parsechangelog -c 0 -S "Version")
PKG_ARCH=$(shell sed -nr '/^Architecture:[[:space:]]+[^$$]+$$/ s!^Architecture:[[:space:]]+([^$$]+)$$!\1!p' <"$(DEBIAN_CONTROL_FILE)")
####################################################################################################
# VARIABLES: DIRECTORIES
####################################################################################################
DEBIAN_DIR=debian
OUT_DIR=..
####################################################################################################
# VARIABLES: DEBIAN FILES
####################################################################################################
DEBIAN_CONTROL_FILE=$(DEBIAN_DIR)/control
####################################################################################################
# VARIABLES: PACKAGE FILES
####################################################################################################
PKG_BUILD_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION)_$(DEB_TARGET_ARCH).build
PKG_CHANGES_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION)_$(DEB_TARGET_ARCH).changes
PKG_DEB_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION)_$(PKG_ARCH).deb
PKG_DSC_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION).dsc
PKG_SRC_ARCHIVE_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION).tar.xz
PKG_SRC_BUILD_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION)_source.build
PKG_SRC_CHANGES_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION)_source.changes
PKG_SRC_PPA_UPLOAD_FILE=$(OUT_DIR)/$(PKG_NAME)_$(PKG_VERSION)_source.ppa.upload
####################################################################################################
# VARIABLES: UPLOAD
####################################################################################################
PPA_USER=michal.kotelba
PPA_NAME=ppa
####################################################################################################
# TARGETS
####################################################################################################
.PHONY: all apt-install apt-purge apt-remove build build-binary build-src clean clean-out upload
ifeq ($(MAKELEVEL),0)
all: clean-out build-src build-binary
else
all: build
endif
apt-install:
$(eval $(call assert_is_superuser,$@))
dpkg -i "$(PKG_DEB_FILE)"
apt-purge:
$(eval $(call assert_is_superuser,$@))
$(if $(shell $(call get_package_selection)),apt-get -y "purge" "$(PKG_NAME)")
apt-remove:
$(eval $(call assert_is_superuser,$@))
$(if $(shell $(call get_package_selection)),apt-get -y "remove" "$(PKG_NAME)")
build:
build-binary: $(PKG_DEB_FILE)
$(PKG_DEB_FILE):
debuild -b
build-src: $(PKG_SRC_CHANGES_FILE)
$(PKG_SRC_CHANGES_FILE):
debuild -S -sa
clean:
clean-out:
debclean
rm -f "$(PKG_DSC_FILE)" "$(PKG_SRC_ARCHIVE_FILE)" "$(PKG_SRC_BUILD_FILE)" "$(PKG_SRC_CHANGES_FILE)" "$(PKG_SRC_PPA_UPLOAD_FILE)" "$(PKG_BUILD_FILE)" \
"$(PKG_CHANGES_FILE)" "$(PKG_DEB_FILE)"
upload:
dput "ppa:$(PPA_USER)/$(PPA_NAME)" "$(PKG_SRC_CHANGES_FILE)"