-
Notifications
You must be signed in to change notification settings - Fork 0
/
package.mk
79 lines (68 loc) · 3.04 KB
/
package.mk
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
# $(1) PACKAGE
# $(2) ARCHIVE_DIR
# $(3) SRC_DIR
# $(4) BUILD_DIR
# $(5) ARCHIVE_NAME
# $(6) DOWNLOAD_URL
define package
.PHONY: download_$(PACKAGE)
download_$(PACKAGE): $(ARCHIVE_DIR)/$(ARCHIVE_NAME)
.PHONY: unpack$(PHONY_TARGET_PREFIX)_$(PACKAGE)
unpack_$(PACKAGE): $(SRC_DIR)/$(PACKAGE)/stamp.unpacked
.PHONY: prepare_$(PACKAGE)
prepare_$(PACKAGE): $(SRC_DIR)/$(PACKAGE)/stamp.prepared
.PHONY: configure$(PHONY_TARGET_PREFIX)_$(PACKAGE)
configure$(PHONY_TARGET_PREFIX)_$(PACKAGE): $(BUILD_DIR)/$(PACKAGE)/stamp.configured
.PHONY: build$(PHONY_TARGET_PREFIX)_$(PACKAGE)
build$(PHONY_TARGET_PREFIX)_$(PACKAGE): $(BUILD_DIR)/$(PACKAGE)/stamp.built
.PHONY: copy$(PHONY_TARGET_PREFIX)_$(PACKAGE)
copy$(PHONY_TARGET_PREFIX)_$(PACKAGE): $(PACKAGE_INSTALLED_FILES)
$(PACKAGE)_INSTALLED_FILES=$(PACKAGE_INSTALLED_FILES)
$(eval $(pkg-targets))
ifneq ($(IS_ARCHIVE_$(PACKAGE)_TARGET_CREATED),true)
IS_ARCHIVE_$(PACKAGE)_TARGET_CREATED:=true
$(ARCHIVE_DIR)/$(ARCHIVE_NAME): $(ARCHIVE_DIR)/stamp.created
wget -O $(ARCHIVE_DIR)/$(ARCHIVE_NAME) --no-use-server-timestamps "$(DOWNLOAD_URL)"
cd "$(ARCHIVE_DIR)"; \
sha512sum -c $(ROOT_DIR)/checksums/$(ARCHIVE_NAME).sha512 || \
(mv "$(ARCHIVE_DIR)/$(ARCHIVE_NAME)" "$(ARCHIVE_DIR)/$(ARCHIVE_NAME).invalid_checksum"; \
false)
endif
ifneq ($(IS_UPDATE_$(PACKAGE)_WITH_TOFU_TARGET_CREATED),true)
IS_UPDATE_$(PACKAGE)_WITH_TOFU_TARGET_CREATED:=true
.PHONY: update_$(PACKAGE)_with_tofu
update_$(PACKAGE)_with_tofu:
if [ -f $(ROOT_DIR)/checksums/$(ARCHIVE_NAME).sha512 ]; then \
echo "Checksum for $(ARCHIVE_NAME) already exists."; \
echo "You don't need the update step."; \
echo "Bailing."; \
else \
wget --continue -O $(ARCHIVE_DIR)/$(ARCHIVE_NAME) \
--no-use-server-timestamps "$(DOWNLOAD_URL)"; \
cd "$(ARCHIVE_DIR)"; \
sha512sum "$(ARCHIVE_NAME)" \
> "$(ROOT_DIR)/checksums/$(ARCHIVE_NAME).sha512"; \
fi
endif
ifneq ($(IS_SRC_$(PACKAGE)_TARGET_CREATED),true)
IS_SRC_$(PACKAGE)_TARGET_CREATED:=true
$(SRC_DIR)/$(PACKAGE)/stamp.unpacked: $(ARCHIVE_DIR)/$(ARCHIVE_NAME)
#TODO: verify hash
mkdir -p "$(SRC_DIR)/$(PACKAGE)/"
tar -xf "$(ARCHIVE_DIR)/$(ARCHIVE_NAME)" -C "$(SRC_DIR)/$(PACKAGE)"
touch $(SRC_DIR)/$(PACKAGE)/stamp.unpacked
endif
ifneq ($(IS_SRC_$(PACKAGE)_TARGET_PREPARED),true)
IS_SRC_$(PACKAGE)_TARGET_PREPARED:=true
ifneq ($(PACKAGE_WANT_PREPARE),true)
$(SRC_DIR)/$(PACKAGE)/stamp.prepared: $(SRC_DIR)/$(PACKAGE)/stamp.unpacked
touch $(SRC_DIR)/$(PACKAGE)/stamp.prepared
endif
endif
$(BUILD_DIR)/$(PACKAGE)/stamp.built: $(BUILD_DIR)/$(PACKAGE)/stamp.configured
+PATH=$(EXTRA_PATH):$(PATH) $(MAKE) -C "$(BUILD_DIR)/$(PACKAGE)"
touch $(BUILD_DIR)/$(PACKAGE)/stamp.built
endef
make-prepared-stamp=touch $(SRC_DIR)/$(PACKAGE)/stamp.prepared
make-configured-stamp=touch $(BUILD_DIR)/$(PACKAGE)/stamp.configured
depend-built=$(BUILD_DIR)/$(1)/stamp.built