2 # Copyright (C) 2006-2015 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 include $(TOPDIR
)/rules.mk
9 include $(INCLUDE_DIR
)/kernel.mk
10 include $(INCLUDE_DIR
)/version.mk
11 include $(INCLUDE_DIR
)/feeds.mk
15 IB_NAME
:=$(VERSION_DIST_SANITIZED
)-imagebuilder-
$(if
$(CONFIG_VERSION_FILENAMES
),$(VERSION_NUMBER
)-)$(BOARD
)-$(SUBTARGET
).
$(HOST_OS
)-$(HOST_ARCH
)
16 PKG_BUILD_DIR
:=$(BUILD_DIR
)/$(IB_NAME
)
17 IB_KDIR
:=$(patsubst $(TOPDIR
)/%,$(PKG_BUILD_DIR
)/%,$(KERNEL_BUILD_DIR
))
18 IB_LDIR
:=$(patsubst $(TOPDIR
)/%,$(PKG_BUILD_DIR
)/%,$(LINUX_DIR
))
19 IB_DTSDIR
:=$(patsubst $(TOPDIR
)/%,$(PKG_BUILD_DIR
)/%,$(LINUX_DIR
))/arch
/$(LINUX_KARCH
)/boot
/dts
/
20 IB_IDIR
:=$(patsubst $(TOPDIR
)/%,$(PKG_BUILD_DIR
)/%,$(STAGING_DIR_IMAGE
))
22 BUNDLER_PATH
:= $(subst $(space
),:,$(filter-out $(TOPDIR
)/%,$(subst :,$(space
),$(PATH
))))
23 BUNDLER_COMMAND
:= PATH
=$(BUNDLER_PATH
) $(XARGS
) $(SCRIPT_DIR
)/bundle-libraries.sh
$(PKG_BUILD_DIR
)/staging_dir
/host
25 PACKAGE_SUFFIX
:=$(if
$(CONFIG_USE_APK
),apk
,ipk
)
29 $(BIN_DIR
)/$(IB_NAME
).
tar.zst
: clean
30 rm -rf
$(PKG_BUILD_DIR
)
31 mkdir
-p
$(IB_KDIR
) $(IB_LDIR
) $(PKG_BUILD_DIR
)/staging_dir
/host
/lib \
32 $(PKG_BUILD_DIR
)/target
/linux
$(PKG_BUILD_DIR
)/scripts
$(IB_DTSDIR
)
33 -cp
$(TOPDIR
)/.config
$(PKG_BUILD_DIR
)/.config
34 $(SED
) 's/^CONFIG_BINARY_FOLDER=.*/# CONFIG_BINARY_FOLDER is not set/' $(PKG_BUILD_DIR
)/.config
35 $(SED
) 's/^CONFIG_DOWNLOAD_FOLDER=.*/# CONFIG_DOWNLOAD_FOLDER is not set/' $(PKG_BUILD_DIR
)/.config
37 $(INCLUDE_DIR
) $(SCRIPT_DIR
) \
40 $(TMP_DIR
)/.targetinfo \
41 $(TMP_DIR
)/.packageinfo \
44 $(INSTALL_DIR
) $(PKG_BUILD_DIR
)/packages
46 ifeq ($(CONFIG_IB_STANDALONE
),)
47 ifneq ($(CONFIG_USE_APK
),)
48 $(call FeedSourcesAppendAPK
,$(PKG_BUILD_DIR
)/repositories
)
49 $(VERSION_SED_SCRIPT
) $(PKG_BUILD_DIR
)/repositories
51 echo
'## Remote package repositories' >> $(PKG_BUILD_DIR
)/repositories.conf
52 $(call FeedSourcesAppendOPKG
,$(PKG_BUILD_DIR
)/repositories.conf
)
53 $(VERSION_SED_SCRIPT
) $(PKG_BUILD_DIR
)/repositories.conf
55 # create an empty package index so `opkg` doesn't report an error
56 touch
$(PKG_BUILD_DIR
)/packages
/Packages
57 $(INSTALL_DATA
) .
/files
/README.md
$(PKG_BUILD_DIR
)/packages
/
59 echo
'' >> $(PKG_BUILD_DIR
)/repositories.conf
60 echo
'## This is the local package repository, do not remove!' >> $(PKG_BUILD_DIR
)/repositories.conf
61 echo
'src imagebuilder file:packages' >> $(PKG_BUILD_DIR
)/repositories.conf
65 ifeq ($(CONFIG_BUILDBOT
),)
66 ifeq ($(CONFIG_IB_STANDALONE
),)
67 $(FIND
) $(call FeedPackageDir
,libc
) -type f \
68 \
( -name
'libc_*.$(PACKAGE_SUFFIX)' -or
-name
'kernel_*.$(PACKAGE_SUFFIX)' -or
-name
'kmod-*.$(PACKAGE_SUFFIX)' \
) \
69 -exec
$(CP
) -t
$(PKG_BUILD_DIR
)/packages
{} +
71 $(FIND
) $(wildcard $(PACKAGE_SUBDIRS
)) -type f
-name
'*.$(PACKAGE_SUFFIX)' \
72 -exec
$(CP
) -t
$(PKG_BUILD_DIR
)/packages
/ {} +
75 $(FIND
) $(call FeedPackageDir
,libc
) -type f \
76 \
( -name
'libc_*.$(PACKAGE_SUFFIX)' -or
-name
'kernel_*.$(PACKAGE_SUFFIX)' \
) \
77 -exec
$(CP
) -t
$(IB_LDIR
)/ {} +
80 ifneq ($(CONFIG_USE_APK
),y
)
81 ifneq ($(CONFIG_SIGNATURE_CHECK
),)
82 echo
'' >> $(PKG_BUILD_DIR
)/repositories.conf
83 echo
'option check_signature' >> $(PKG_BUILD_DIR
)/repositories.conf
84 $(INSTALL_DIR
) $(PKG_BUILD_DIR
)/keys
85 $(CP
) -L
$(STAGING_DIR_ROOT
)/etc
/opkg
/keys
/ $(PKG_BUILD_DIR
)/
86 $(CP
) -L
$(STAGING_DIR_ROOT
)/usr
/sbin
/opkg-key
$(PKG_BUILD_DIR
)/scripts
/
90 $(CP
) -L
$(TOPDIR
)/target
/linux
/Makefile
$(PKG_BUILD_DIR
)/target
/linux
91 $(CP
) -L
$(TOPDIR
)/target
/linux
/generic
$(PKG_BUILD_DIR
)/target
/linux
92 # check if board is installed from a feeds subdirectory
93 if
[ -d
$(TOPDIR
)/target
/linux
/feeds
/$(BOARD
) ]; then \
94 mkdir
-p
$(PKG_BUILD_DIR
)/target
/linux
/feeds
; \
95 $(CP
) -L
$(TOPDIR
)/target
/linux
/feeds
/$(BOARD
) $(PKG_BUILD_DIR
)/target
/linux
/feeds
; \
97 $(CP
) -L
$(TOPDIR
)/target
/linux
/$(BOARD
) $(PKG_BUILD_DIR
)/target
/linux
; \
99 if
[ -d
$(TOPDIR
)/staging_dir
/host
/lib
/grub
]; then \
100 $(CP
) $(TOPDIR
)/staging_dir
/host
/lib
/grub
/ $(PKG_BUILD_DIR
)/staging_dir
/host
/lib
; \
103 $(PKG_BUILD_DIR
)/target
/linux
/*/files
{,-*} \
104 $(PKG_BUILD_DIR
)/target
/linux
/*/patches
{,-*} \
105 $(PKG_BUILD_DIR
)/target
/linux
/generic
/{pending
,backport
,hack
}{,-*}
106 -cp
$(KERNEL_BUILD_DIR
)/* $(IB_KDIR
)/ # don't copy subdirectories here
107 -cp
$(LINUX_DIR
)/.config
$(IB_LDIR
)/
108 rm -f
$(IB_KDIR
)/root.
*
109 rm -f
$(IB_KDIR
)/vmlinux.debug
110 if
[ -x
$(LINUX_DIR
)/scripts
/dtc
/dtc
]; then \
111 $(INSTALL_DIR
) $(IB_LDIR
)/scripts
/dtc
; \
112 $(INSTALL_BIN
) $(LINUX_DIR
)/scripts
/dtc
/dtc
$(IB_LDIR
)/scripts
/dtc
/dtc
; \
114 if
[ -d
$(LINUX_DIR
)/arch
/$(LINUX_KARCH
)/boot
/dts
]; then \
115 $(CP
) -L
$(LINUX_DIR
)/arch
/$(LINUX_KARCH
)/boot
/dts
/* $(IB_DTSDIR
); \
117 $(SED
) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $(PKG_BUILD_DIR
)/include/version.mk
118 $(SED
) 's,^# SOURCE_DATE_EPOCH:=.*,SOURCE_DATE_EPOCH:=$(SOURCE_DATE_EPOCH),g' $(PKG_BUILD_DIR
)/include/version.mk
119 $(SED
) '/LINUX_VERMAGIC:=/ { s,unknown,$(LINUX_VERMAGIC),g }' $(PKG_BUILD_DIR
)/include/kernel.mk
120 find
$(PKG_BUILD_DIR
) -name CVS
-o
-name .git
-o
-name .svn \
122 $(INSTALL_DIR
) $(IB_IDIR
)
123 -$(CP
) $(STAGING_DIR_IMAGE
)/* $(IB_IDIR
)/
124 $(INSTALL_DIR
) $(PKG_BUILD_DIR
)/staging_dir
/host
/bin
125 $(CP
) $(STAGING_DIR_HOST
)/bin
/* $(PKG_BUILD_DIR
)/staging_dir
/host
/bin
/
126 (cd
$(PKG_BUILD_DIR
); find staging_dir
/host
/bin
/ $(IB_LDIR
)/scripts
/dtc
/ -type f | \
128 $(CP
) $(TOPDIR
)/staging_dir
/host
/lib
/libfakeroot
* $(PKG_BUILD_DIR
)/staging_dir
/host
/lib
129 STRIP
=$(STAGING_DIR_HOST
)/bin
/sstrip
$(SCRIPT_DIR
)/rstrip.sh
$(PKG_BUILD_DIR
)/staging_dir
/host
/bin
/
132 tar -I
'$(STAGING_DIR_HOST)/bin/zstd -T0 --ultra -20' -cf
$@
$(IB_NAME
) \
133 --mtime
="$(shell date --date=@$(SOURCE_DATE_EPOCH))"; \
138 compile
: $(BIN_DIR
)/$(IB_NAME
).
tar.zst
142 rm -rf
$(PKG_BUILD_DIR
) $(BIN_DIR
)/$(IB_NAME
).
tar.zst