Root/
Source at commit f104603657789697c8f9ca612a76c003cad41d6a created 13 years 3 months ago. By Xiangfu Liu, automatic create /dev/rtc | |
---|---|
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 | # where to build (and put) .ipk packages |
9 | OPKG:= \ |
10 | IPKG_TMP=$(TMP_DIR)/ipkg \ |
11 | IPKG_INSTROOT=$(TARGET_DIR) \ |
12 | IPKG_CONF_DIR=$(STAGING_DIR)/etc \ |
13 | IPKG_OFFLINE_ROOT=$(TARGET_DIR) \ |
14 | $(STAGING_DIR_HOST)/bin/opkg \ |
15 | --offline-root $(TARGET_DIR) \ |
16 | --force-depends \ |
17 | --force-overwrite \ |
18 | --force-postinstall \ |
19 | --add-dest root:/ \ |
20 | --add-arch all:100 \ |
21 | --add-arch $(ARCH_PACKAGES):200 |
22 | |
23 | # invoke ipkg-build with some default options |
24 | IPKG_BUILD:= \ |
25 | ipkg-build -c -o 0 -g 0 |
26 | |
27 | IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/opkg |
28 | |
29 | define BuildIPKGVariable |
30 | $(call shexport,Package/$(1)/$(2)) |
31 | $(1)_COMMANDS += var2file "$(call shvar,Package/$(1)/$(2))" $(2); |
32 | endef |
33 | |
34 | PARENL :=( |
35 | PARENR :=) |
36 | |
37 | dep_split=$(subst :,$(space),$(1)) |
38 | dep_rem=$(subst !,,$(subst $(strip $(PARENL)),,$(subst $(strip $(PARENR)),,$(word 1,$(call dep_split,$(1)))))) |
39 | dep_confvar=$(strip $(foreach cond,$(subst ||, ,$(call dep_rem,$(1))),$(CONFIG_$(cond)))) |
40 | dep_pos=$(if $(call dep_confvar,$(1)),$(call dep_val,$(1))) |
41 | dep_neg=$(if $(call dep_confvar,$(1)),,$(call dep_val,$(1))) |
42 | dep_if=$(if $(findstring !,$(1)),$(call dep_neg,$(1)),$(call dep_pos,$(1))) |
43 | dep_val=$(word 2,$(call dep_split,$(1))) |
44 | strip_deps=$(strip $(subst +,,$(filter-out @%,$(1)))) |
45 | filter_deps=$(foreach dep,$(call strip_deps,$(1)),$(if $(findstring :,$(dep)),$(call dep_if,$(dep)),$(dep))) |
46 | |
47 | ifeq ($(DUMP),) |
48 | define BuildTarget/ipkg |
49 | IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk |
50 | IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1) |
51 | INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list |
52 | KEEP_$(1):=$(strip $(call Package/$(1)/conffiles)) |
53 | |
54 | ifeq ($(if $(VARIANT),$(BUILD_VARIANT)),$(VARIANT)) |
55 | ifdef Package/$(1)/install |
56 | ifneq ($(CONFIG_PACKAGE_$(1))$(SDK)$(DEVELOPER),) |
57 | compile: $$(IPKG_$(1)) $(STAGING_DIR_ROOT)/stamp/.$(1)_installed |
58 | |
59 | ifeq ($(CONFIG_PACKAGE_$(1)),y) |
60 | install: $$(INFO_$(1)) |
61 | endif |
62 | else |
63 | compile: $(1)-disabled |
64 | $(1)-disabled: |
65 | @echo "WARNING: skipping $(1) -- package not selected" |
66 | endif |
67 | endif |
68 | endif |
69 | |
70 | IDEPEND_$(1):=$$(call filter_deps,$$(DEPENDS)) |
71 | |
72 | $(eval $(call BuildIPKGVariable,$(1),conffiles)) |
73 | $(eval $(call BuildIPKGVariable,$(1),preinst)) |
74 | $(eval $(call BuildIPKGVariable,$(1),postinst)) |
75 | $(eval $(call BuildIPKGVariable,$(1),prerm)) |
76 | $(eval $(call BuildIPKGVariable,$(1),postrm)) |
77 | |
78 | $(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(STAMP_BUILT) |
79 | rm -rf $(STAGING_DIR_ROOT)/tmp-$(1) |
80 | mkdir -p $(STAGING_DIR_ROOT)/stamp $(STAGING_DIR_ROOT)/tmp-$(1) |
81 | $(call Package/$(1)/install,$(STAGING_DIR_ROOT)/tmp-$(1)) |
82 | $(call Package/$(1)/install_lib,$(STAGING_DIR_ROOT)/tmp-$(1)) |
83 | $(CP) $(STAGING_DIR_ROOT)/tmp-$(1)/. $(STAGING_DIR_ROOT)/ |
84 | rm -rf $(STAGING_DIR_ROOT)/tmp-$(1) |
85 | touch $$@ |
86 | |
87 | $$(IPKG_$(1)): $(STAMP_BUILT) |
88 | @rm -f $(PACKAGE_DIR)/$(1)_* |
89 | rm -rf $$(IDIR_$(1)) |
90 | mkdir -p $$(IDIR_$(1))/CONTROL |
91 | echo "Package: $(1)" > $$(IDIR_$(1))/CONTROL/control |
92 | echo "Version: $(VERSION)" >> $$(IDIR_$(1))/CONTROL/control |
93 | ( \ |
94 | DEPENDS='$(EXTRA_DEPENDS)'; \ |
95 | for depend in $$(filter-out @%,$$(IDEPEND_$(1))); do \ |
96 | DEPENDS=$$$${DEPENDS:+$$$$DEPENDS, }$$$${depend##+}; \ |
97 | done; \ |
98 | echo "Depends: $$$$DEPENDS"; \ |
99 | echo "Provides: $(PROVIDES)"; \ |
100 | echo "Source: $(SOURCE)"; \ |
101 | echo "Section: $(SECTION)"; \ |
102 | echo "Status: unknown $(if $(filter hold,$(PKG_FLAGS)),hold,ok) not-installed"; \ |
103 | echo "Essential: $(if $(filter essential,$(PKG_FLAGS)),yes,no)"; \ |
104 | echo "Priority: $(PRIORITY)"; \ |
105 | echo "Maintainer: $(MAINTAINER)"; \ |
106 | echo "Architecture: $(PKGARCH)"; \ |
107 | echo "Installed-Size: 1"; \ |
108 | echo -n "Description: "; getvar $(call shvar,Package/$(1)/description) | sed -e 's,^[[:space:]]*, ,g'; \ |
109 | ) >> $$(IDIR_$(1))/CONTROL/control |
110 | chmod 644 $$(IDIR_$(1))/CONTROL/control |
111 | (cd $$(IDIR_$(1))/CONTROL; \ |
112 | $($(1)_COMMANDS) \ |
113 | ) |
114 | $(call Package/$(1)/install,$$(IDIR_$(1))) |
115 | mkdir -p $(PACKAGE_DIR) |
116 | -find $$(IDIR_$(1)) -name 'CVS' -o -name '.svn' -o -name '.#*' | $(XARGS) rm -rf |
117 | $(RSTRIP) $$(IDIR_$(1)) |
118 | SIZE=`cd $$(IDIR_$(1)); du -bs --exclude=./CONTROL . 2>/dev/null | cut -f1`; \ |
119 | $(SED) "s|^\(Installed-Size:\).*|\1 $$$$SIZE|g" $$(IDIR_$(1))/CONTROL/control |
120 | |
121 | ifneq ($$(KEEP_$(1)),) |
122 | @( \ |
123 | keepfiles=""; \ |
124 | for x in $$(KEEP_$(1)); do \ |
125 | [ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \ |
126 | done; \ |
127 | [ -z "$keepfiles" ] || { \ |
128 | mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \ |
129 | for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \ |
130 | }; \ |
131 | ) |
132 | endif |
133 | |
134 | $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR) |
135 | @[ -f $$(IPKG_$(1)) ] || false |
136 | |
137 | $$(INFO_$(1)): $$(IPKG_$(1)) |
138 | @[ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp |
139 | $(OPKG) install $$(IPKG_$(1)) |
140 | $(if $(filter-out essential,$(PKG_FLAGS)),for flag in $(filter-out essential,$(PKG_FLAGS)); do $(OPKG) flag $$$$flag $(1); done) |
141 | |
142 | $(1)-clean: |
143 | rm -f $(PACKAGE_DIR)/$(1)_* |
144 | |
145 | clean: $(1)-clean |
146 | |
147 | endef |
148 | endif |
149 |