fix recursive dependencies on build directories - should lead to fewer spontaneous...
[openwrt/svn-archive/archive.git] / include / package-ipkg.mk
1 #
2 # Copyright (C) 2006,2007 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 define BuildIPKGVariable
9 $(call shexport,Package/$(1)/$(2))
10 $(1)_COMMANDS += var2file "$(call shvar,Package/$(1)/$(2))" $(2);
11 endef
12
13 ifeq ($(DUMP),)
14 define BuildIPKG
15 IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
16 IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1)
17 INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
18
19 ifdef Package/$(1)/install
20 ifneq ($(CONFIG_PACKAGE_$(1))$(SDK)$(DEVELOPER),)
21 compile: $$(IPKG_$(1))
22
23 ifeq ($(CONFIG_PACKAGE_$(1)),y)
24 install: $$(INFO_$(1))
25 endif
26 else
27 compile: $(1)-disabled
28 $(1)-disabled:
29 @echo "WARNING: skipping $(1) -- package not selected"
30 endif
31 endif
32
33 IDEPEND_$(1):=$$(strip $$(DEPENDS))
34
35 $(eval $(call BuildIPKGVariable,$(1),conffiles))
36 $(eval $(call BuildIPKGVariable,$(1),preinst))
37 $(eval $(call BuildIPKGVariable,$(1),postinst))
38 $(eval $(call BuildIPKGVariable,$(1),prerm))
39 $(eval $(call BuildIPKGVariable,$(1),postrm))
40 $$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.version-$(1)_$(VERSION)_$(PKGARCH)
41 @rm -f $(PACKAGE_DIR)/$(1)_*
42 mkdir -p $$(IDIR_$(1))/CONTROL
43 echo "Package: $(1)" > $$(IDIR_$(1))/CONTROL/control
44 echo "Version: $(VERSION)" >> $$(IDIR_$(1))/CONTROL/control
45 ( \
46 DEPENDS='$(EXTRA_DEPENDS)'; \
47 for depend in $$(filter-out @%,$$(IDEPEND_$(1))); do \
48 DEPENDS=$$$${DEPENDS:+$$$$DEPENDS, }$$$${depend##+}; \
49 done; \
50 echo "Depends: $$$$DEPENDS"; \
51 echo "Source: $(SOURCE)"; \
52 echo "Section: $(SECTION)"; \
53 echo "Priority: $(PRIORITY)"; \
54 echo "Maintainer: $(MAINTAINER)"; \
55 echo "Architecture: $(PKGARCH)"; \
56 echo -n "Description: "; getvar $(call shvar,Package/$(1)/description) | sed -e 's,^[[:space:]]*, ,g'; \
57 ) >> $$(IDIR_$(1))/CONTROL/control
58 chmod 644 $$(IDIR_$(1))/CONTROL/control
59 (cd $$(IDIR_$(1))/CONTROL; \
60 $($(1)_COMMANDS) \
61 )
62
63 $$(IPKG_$(1)): $(PKG_BUILD_DIR)/.built $$(IDIR_$(1))/CONTROL/control
64 $(call Package/$(1)/install,$$(IDIR_$(1)))
65 mkdir -p $(PACKAGE_DIR)
66 -find $$(IDIR_$(1)) -name CVS | $(XARGS) rm -rf
67 -find $$(IDIR_$(1)) -name .svn | $(XARGS) rm -rf
68 -find $$(IDIR_$(1)) -name '.#*' | $(XARGS) rm -f
69 $(RSTRIP) $$(IDIR_$(1))
70 $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
71 @[ -f $$(IPKG_$(1)) ] || false
72
73 $$(INFO_$(1)): $$(IPKG_$(1))
74 $(IPKG) install $$(IPKG_$(1))
75
76 $(1)-clean:
77 rm -f $(PACKAGE_DIR)/$(1)_*
78
79 clean: $(1)-clean
80
81 $(PKG_BUILD_DIR)/.version-$(1)_$(VERSION)_$(PKGARCH): $(STAMP_PREPARED)
82 -@rm -f $(PKG_BUILD_DIR)/.version-$(1)_* 2>/dev/null
83 @touch $$@
84
85 $$(eval $$(call Build/DefaultTargets,$(1)))
86
87 endef
88 endif