don't fail if BR2_USE_UPDATES tries to update non-checkout
[buildroot.git] / package / busybox / initramfs.mk
blobf52f6755620d4328e7308c30a99d0b406b5c49c5
1 #############################################################
3 # busybox image for initramfs
5 #############################################################
6 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y)
8 BUSYBOX_INITRAMFS_DIR:=$(BUSYBOX_DIR)-initramfs
9 BR2_INITRAMFS_DIR:=$(PROJECT_BUILD_DIR)/initramfs
10 BB_INITRAMFS_TARGET:=$(IMAGE).initramfs_lst
11 BB_INITRAMFS_TARGET_F:=$(notdir $(BB_INITRAMFS_TARGET))
13 $(BUSYBOX_INITRAMFS_DIR)/.unpacked: $(DL_DIR)/$(BUSYBOX_SOURCE)
14 rm -rf $(BUILD_DIR)/tmp $(BUSYBOX_INITRAMFS_DIR)
15 mkdir -p $(BUILD_DIR)/tmp
16 $(BUSYBOX_UNZIP) $(DL_DIR)/$(BUSYBOX_SOURCE) | tar -C $(BUILD_DIR)/tmp $(TAR_OPTIONS) -
17 ifeq ($(BR2_PACKAGE_BUSYBOX_SNAPSHOT),y)
18 mv $(BUILD_DIR)/tmp/busybox $(BUSYBOX_INITRAMFS_DIR)
19 else
20 mv $(BUILD_DIR)/tmp/busybox-$(BUSYBOX_VERSION) $(BUSYBOX_INITRAMFS_DIR)
21 endif
22 ifeq ($(BR2_USE_UPDATES),y)
23 (cd $(@D) && $(SVN_UP))
24 endif
25 touch $@
27 $(BUSYBOX_INITRAMFS_DIR)/.config $(BUSYBOX_INITRAMFS_DIR)/.configured: $(BUSYBOX_INITRAMFS_DIR)/.unpacked
28 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
29 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
30 CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_INITRAMFS_DIR) \
31 allnoconfig
32 mv $(BUSYBOX_INITRAMFS_DIR)/.config $(BUSYBOX_INITRAMFS_DIR)/.config.no
33 (echo CONFIG_PREFIX=\"$(BR2_INITRAMFS_DIR)\"; \
34 echo CONFIG_NITPICK=y; \
35 echo CONFIG_FEATURE_BUFFERS_USE_MALLOC=y; \
36 echo CONFIG_INCLUDE_SUSv2=n; \
37 echo CONFIG_CAT=y; \
38 echo CONFIG_CHROOT=y; \
39 echo CONFIG_DD=y; \
40 echo CONFIG_FEATURE_DD_IBS_OBS=y; \
41 echo CONFIG_ECHO=y; \
42 echo CONFIG_FALSE=y; \
43 echo CONFIG_GETTY=y; \
44 echo CONFIG_GUNZIP=y; \
45 echo CONFIG_HALT=y; \
46 echo CONFIG_HOSTNAME=y; \
47 echo CONFIG_INIT=y; \
48 echo CONFIG_INSMOD=y; \
49 echo CONFIG_IP=y; \
50 echo CONFIG_KILL=y; \
51 echo CONFIG_LN=y; \
52 echo CONFIG_LOGIN=y; \
53 echo CONFIG_MDEV=y; \
54 echo CONFIG_MKDIR=y; \
55 echo CONFIG_MKFIFO=y; \
56 echo CONFIG_MKNOD=y; \
57 echo CONFIG_MODPROBE=y; \
58 echo CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y; \
59 echo CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y; \
60 echo CONFIG_FEATURE_CHECK_TAINTED_MODULE=n; \
61 echo CONFIG_FEATURE_2_4_MODULES=n; \
62 echo CONFIG_FEATURE_IP_ADDRESS=y; \
63 echo CONFIG_FEATURE_IP_LINK=y; \
64 echo CONFIG_FEATURE_IP_ROUTE=y; \
65 echo CONFIG_FEATURE_IP_TUNNEL=y; \
66 echo CONFIG_FEATURE_IP_RULE=y; \
67 echo CONFIG_FEATURE_IP_RARE_PROTOCOLS=n; \
68 echo CONFIG_MOUNT=y; \
69 echo CONFIG_MSH=y; \
70 echo CONFIG_FEATURE_SH_IS_MSH=y; \
71 echo CONFIG_PS=y; \
72 echo CONFIG_READLINK=y; \
73 echo CONFIG_RMMOD=y; \
74 echo CONFIG_STATIC=y; \
75 echo CONFIG_SWITCH_ROOT=y; \
76 echo CONFIG_SYNC=y; \
77 echo CONFIG_TFTP=y; \
78 echo CONFIG_FEATURE_TFTP_GET=y; \
79 echo CONFIG_FEATURE_TFTP_PUT=y; \
80 echo CONFIG_TRUE=y; \
81 echo CONFIG_UMOUNT=y; \
82 echo CONFIG_FEATURE_UMOUNT_ALL=y; \
83 echo CONFIG_UNAME=y; \
84 ) > $(BUSYBOX_INITRAMFS_DIR)/.config
85 cp -f $(BUSYBOX_INITRAMFS_DIR)/.config \
86 $(BUSYBOX_INITRAMFS_DIR)/.config.prune
87 $(SED) 's|\([^=]*\)=.*|/\1[^_]*/d|g' \
88 $(BUSYBOX_INITRAMFS_DIR)/.config.prune
89 $(SED) '' -f $(BUSYBOX_INITRAMFS_DIR)/.config.prune \
90 $(BUSYBOX_INITRAMFS_DIR)/.config.no
91 cat $(BUSYBOX_INITRAMFS_DIR)/.config.no >> \
92 $(BUSYBOX_INITRAMFS_DIR)/.config
93 yes "" | $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
94 HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
95 CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_INITRAMFS_DIR) \
96 oldconfig
97 touch $@
100 $(BUSYBOX_INITRAMFS_DIR)/busybox: $(BUSYBOX_INITRAMFS_DIR)/.configured
101 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
102 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
103 CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
104 ARCH=$(KERNEL_ARCH) \
105 EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \
106 busybox.links busybox
107 ifeq ($(BR2_PREFER_IMA)$(BR2_PACKAGE_BUSYBOX_SNAPSHOT),yy)
108 rm -f $@
109 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
110 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
111 CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
112 ARCH=$(KERNEL_ARCH) STRIP="$(STRIPCMD)" \
113 EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \
114 -f scripts/Makefile.IMA
115 endif
117 $(BR2_INITRAMFS_DIR)/bin/busybox: $(BUSYBOX_INITRAMFS_DIR)/busybox
118 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
119 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
120 CROSS="$(TARGET_CROSS)" \
121 ARCH=$(KERNEL_ARCH) STRIP="$(STRIPCMD)" \
122 EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \
123 install
124 $(STRIPCMD) $(STRIP_STRIP_ALL) $@
127 $(BB_INITRAMFS_TARGET): host-fakeroot makedevs $(BR2_INITRAMFS_DIR)/bin/busybox
128 ln -fs bin/busybox $(PROJECT_BUILD_DIR)/initramfs/init
129 mkdir -p $(PROJECT_BUILD_DIR)/initramfs/etc
130 for f in etc/inittab etc/shadow etc/passwd; do \
131 $(INSTALL) -D target/generic/target_busybox_skeleton/$$f \
132 $(PROJECT_BUILD_DIR)/initramfs/$$f; \
133 done
134 #$(INSTALL) -D -m0755 $(STAGING_DIR)/bin/makedev
135 rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(BB_INITRAMFS_TARGET_F)
136 (echo "chown -R 0:0 $(PROJECT_BUILD_DIR)/initramfs"; \
137 echo "$(STAGING_DIR)/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(PROJECT_BUILD_DIR)/initramfs"; \
138 echo "$(CONFIG_SHELL) target/initramfs/gen_initramfs_list.sh -u 0 -g 0 $(PROJECT_BUILD_DIR)/initramfs > $(BB_INITRAMFS_TARGET)"; \
139 ) > $(PROJECT_BUILD_DIR)/_fakeroot.$(BB_INITRAMFS_TARGET_F)
140 chmod +x $(PROJECT_BUILD_DIR)/_fakeroot.$(BB_INITRAMFS_TARGET_F)
141 $(STAGING_DIR)/usr/bin/fakeroot -- \
142 $(PROJECT_BUILD_DIR)/_fakeroot.$(BB_INITRAMFS_TARGET_F)
143 rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(BB_INITRAMFS_TARGET_F)
144 touch -c $@
146 $(PROJECT_BUILD_DIR)/.initramfs_done: $(BR2_INITRAMFS_DIR)/bin/busybox \
147 $(BB_INITRAMFS_TARGET)
148 touch $@
150 busybox-initramfs-source:
151 busybox-initramfs: $(PROJECT_BUILD_DIR)/.initramfs_done
153 busybox-initramfs-menuconfig: host-sed $(BUILD_DIR) busybox-source $(BUSYBOX_INITRAMFS_DIR)/.configured
154 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" __TARGET_ARCH=$(ARCH) \
155 -C $(BUSYBOX_INITRAMFS_DIR) menuconfig
157 busybox-initramfs-clean:
158 -$(MAKE) -C $(BUSYBOX_INITRAMFS_DIR) clean
159 rm -f $(BUSYBOX_INITRAMFS_DIR)/busybox $(PROJECT_BUILD_DIR)/.initramfs_*
160 rm -rf $(BR2_INITRAMFS_DIR) $(BB_INITRAMFS_TARGET)
162 busybox-initramfs-dirclean:
163 rm -rf $(BUSYBOX_INITRAMFS_DIR) $(BR2_INITRAMFS_DIR) \
164 $(PROJECT_BUILD_DIR)/.initramfs_*
165 endif
166 #############################################################
168 # Toplevel Makefile options
170 #############################################################
171 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y)
172 TARGETS+=busybox-initramfs
173 endif