2 # Copyright (C) 2006-2010 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
10 include $(INCLUDE_DIR
)/feeds.mk
11 include $(INCLUDE_DIR
)/rootfs.mk
13 -include $(TMP_DIR
)/.packagedeps
14 package-y
+= kernel
/linux
15 $(curdir
)/autoremove
:=1
16 $(curdir
)/builddirs
:=$(sort $(package-
) $(package-y
) $(package-m
))
17 $(curdir
)/builddirs-default
:=.
$(sort $(package-y
) $(package-m
))
18 $(curdir
)/builddirs-prereq
:=.
$(sort $(prereq-y
) $(prereq-m
))
20 $(curdir
)/builddirs-check
:=$($(curdir
)/builddirs
)
21 $(curdir
)/builddirs-download
:=$($(curdir
)/builddirs
)
23 ifneq ($(IGNORE_ERRORS
),)
24 package-y-filter
:= $(package-y
)
25 package-m-filter
:= $(filter-out $(package-y
),$(package-m
))
26 package-n-filter
:= $(filter-out $(package-y
) $(package-m
),$(package-
))
27 package-ignore-errors
:= $(filter n m y
,$(IGNORE_ERRORS
))
28 package-ignore-errors
:= $(if
$(package-ignore-errors
),$(package-ignore-errors
),n m
)
29 package-ignore-subdirs
:= $(sort $(foreach m
,$(package-ignore-errors
),$(package-
$(m
)-filter)))
30 $(curdir
)/builddirs-ignore-download
:= $(package-ignore-subdirs
)
31 $(curdir
)/builddirs-ignore-compile
:= $(package-ignore-subdirs
)
32 $(curdir
)/builddirs-ignore-host-download
:= $(package-ignore-subdirs
)
33 $(curdir
)/builddirs-ignore-host-compile
:= $(package-ignore-subdirs
)
36 PACKAGE_INSTALL_FILES
:= \
37 $(foreach pkg
,$(sort $(package-y
)), \
39 $(if
$(strip $(package
/$(pkg
)/variants
)), \
40 $(package
/$(pkg
)/variants
), \
41 $(if
$(package
/$(pkg
)/default-variant
), \
42 $(package
/$(pkg
)/default-variant
), \
46 $(PKG_INFO_DIR
)/$(lastword
$(subst /,$(space
),$(pkg
))).
$(variant
).
install \
50 $(curdir
)/cleanup
: $(TMP_DIR
)/.build
51 rm -rf
$(STAGING_DIR_ROOT
)
54 rm -rf
$(PACKAGE_DIR_ALL
)
55 mkdir
-p
$(PACKAGE_DIR_ALL
)
56 ifneq ($(CONFIG_USE_APK
),)
57 -$(foreach pdir
,$(PACKAGE_SUBDIRS
),$(if
$(wildcard $(pdir
)/*.apk
),ln
-s
$(pdir
)/*.apk
$(PACKAGE_DIR_ALL
);))
59 -$(foreach pdir
,$(PACKAGE_SUBDIRS
),$(if
$(wildcard $(pdir
)/*.ipk
),ln
-s
$(pdir
)/*.ipk
$(PACKAGE_DIR_ALL
);))
63 $(STAGING_DIR_HOST
)/bin
/openssl ecparam
-name prime256v1
-genkey
-noout
-out
$(BUILD_KEY_APK_SEC
)
65 $(BUILD_KEY_APK_PUB
): $(BUILD_KEY_APK_SEC
)
66 $(STAGING_DIR_HOST
)/bin
/openssl ec
-in
$(BUILD_KEY_APK_SEC
) -pubout
> $(BUILD_KEY_APK_PUB
)
68 $(curdir
)/merge-index
: $(curdir
)/merge
69 ifneq ($(CONFIG_USE_APK
),)
70 (cd
$(PACKAGE_DIR_ALL
) && $(STAGING_DIR_HOST
)/bin
/apk mkndx \
72 --keys-dir
$(TOPDIR
) \
73 --sign
$(BUILD_KEY_APK_SEC
) \
74 --output packages.adb \
78 (cd
$(PACKAGE_DIR_ALL
) && $(SCRIPT_DIR
)/ipkg-make-index.sh .
2>&1 > Packages
; )
82 $(curdir
)//compile
= $(STAGING_DIR
)/.prepared
$(BIN_DIR
)
83 ifneq ($(CONFIG_USE_APK
),)
84 $(curdir
)/compile
: $(curdir
)/system
/apk
/host
/compile
$(BUILD_KEY_APK_SEC
) $(BUILD_KEY_APK_PUB
)
86 $(curdir
)/compile
: $(curdir
)/system
/opkg
/host
/compile
90 $(curdir
)/install: $(TMP_DIR
)/.build
$(curdir
)/merge
$(curdir
)/merge-index
91 - find
$(STAGING_DIR_ROOT
) -type d |
$(XARGS
) chmod
0755
92 rm -rf
$(TARGET_DIR
) $(TARGET_DIR_ORIG
)
93 mkdir
-p
$(TARGET_DIR
)/tmp
94 ifneq ($(CONFIG_USE_APK
),)
95 $(file
>$(TMP_DIR
)/apk_install_list
,\
96 $(foreach pkg
,$(shell cat
$(PACKAGE_INSTALL_FILES
) 2>/dev
/null
),$(pkg
)$(call GetABISuffix
,$(pkg
))))
97 $(call apk
,$(TARGET_DIR
)) add
--initdb
--no-scripts
--arch
$(ARCH_PACKAGES
) $$(cat
$(TMP_DIR
)/apk_install_list
)
99 $(file
>$(TMP_DIR
)/opkg_install_list
,\
100 $(call opkg_package_files
,\
101 $(foreach pkg
,$(shell cat
$(PACKAGE_INSTALL_FILES
) 2>/dev
/null
),$(pkg
)$(call GetABISuffix
,$(pkg
)))))
102 $(call opkg
,$(TARGET_DIR
)) install $$(cat
$(TMP_DIR
)/opkg_install_list
)
103 @for file in
$(PACKAGE_INSTALL_FILES
); do \
104 [ -s
$$file.flags
] || continue
; \
105 for flag in
`cat $$file.flags`; do \
106 $(call opkg
,$(TARGET_DIR
)) flag
$$flag `cat $$file`; \
111 $(CP
) $(TARGET_DIR
) $(TARGET_DIR_ORIG
)
113 $(call prepare_rootfs
,$(TARGET_DIR
),$(TOPDIR
)/files
)
115 $(curdir
)/index
: FORCE
116 @echo Generating package index...
117 ifneq ($(CONFIG_USE_APK
),)
118 @for d in
$(PACKAGE_SUBDIRS
); do \
120 cd
$$d || continue
; \
121 ls
*.apk
>/dev
/null
2>&1 || continue
; \
122 $(STAGING_DIR_HOST
)/bin
/apk mkndx \
124 --keys-dir
$(TOPDIR
) \
125 --sign
$(BUILD_KEY_APK_SEC
) \
126 --output packages.adb \
130 @for d in
$(PACKAGE_SUBDIRS
); do
( \
132 cd
$$d || continue
; \
133 $(SCRIPT_DIR
)/ipkg-make-index.sh .
2>&1 > Packages.manifest
; \
134 grep
-vE
'^(Maintainer|LicenseFiles|Source|SourceName|Require|SourceDateEpoch)' Packages.manifest
> Packages
; \
135 case
"$$(((64 + $$(stat -L -c%s Packages)) % 128))" in
110|
111) \
136 $(call ERROR_MESSAGE
,WARNING
: Applying padding in
$$d/Packages to workaround usign SHA-512 bug
!); \
137 { echo
""; echo
""; } >> Packages
;; \
139 echo
-n
'{"architecture": "$(ARCH_PACKAGES)", "packages":{' > index.json
; \
140 sed
-n
-e
's/^Package: \(.*\)$$/"\1":/p' -e
's/^Version: \(.*\)$$/"\1",/p' Packages | tr
'\n' ' ' >> index.json
; \
141 echo
'}}' >> index.json
; \
142 sed
-i
's/, }}/}}/' index.json
; \
143 gzip
-9nc Packages
> Packages.gz
; \
145 ifdef CONFIG_SIGNED_PACKAGES
146 @echo Signing package index...
147 @for d in
$(PACKAGE_SUBDIRS
); do
( \
149 cd
$$d || continue
; \
150 $(STAGING_DIR_HOST
)/bin
/usign
-S
-m Packages
-s
$(BUILD_KEY
); \
153 ifdef CONFIG_JSON_CYCLONEDX_SBOM
154 @echo Creating CycloneDX package SBOMs...
155 @for d in
$(PACKAGE_SUBDIRS
); do
( \
157 cd
$$d || continue
; \
158 $(SCRIPT_DIR
)/package-metadata.pl pkgcyclonedxsbom Packages.manifest
> Packages.bom.cdx.json || true
; \
163 $(curdir
)/flags-install
:= -j1
165 $(eval
$(call stampfile
,$(curdir
),package
,prereq
,.config
))
166 $(eval
$(call stampfile
,$(curdir
),package
,cleanup
,$(TMP_DIR
)/.build
))
167 $(eval
$(call stampfile
,$(curdir
),package
,compile
,$(TMP_DIR
)/.build
))
168 $(eval
$(call stampfile
,$(curdir
),package
,install,$(TMP_DIR
)/.build
))
169 $(eval
$(call stampfile
,$(curdir
),package
,check,$(TMP_DIR
)/.build
))
171 $(eval
$(call subdir
,$(curdir
)))